所以假设我有 3 个线程从一个类中运行一个实例。该类将执行多项任务。当类达到一个点时,它应该打开一个用户可以输入内容的窗口,然后单击按钮,表单将关闭,线程应该使用用户输入的值执行最后一个任务。
- 启动 3 线程。(每个线程都有不同的值。)
- 执行多项任务。
- 打开窗口并等待输入。
- 用户输入一些数据并单击“确定”。
- 线程获取数据并执行一些附加任务。
- 完成的。
那么,如何将输入的值传递给线程/类?
信息:这是 WPF,而不是 WinForms。
我期待一些答案。
所以假设我有 3 个线程从一个类中运行一个实例。该类将执行多项任务。当类达到一个点时,它应该打开一个用户可以输入内容的窗口,然后单击按钮,表单将关闭,线程应该使用用户输入的值执行最后一个任务。
那么,如何将输入的值传递给线程/类?
信息:这是 WPF,而不是 WinForms。
我期待一些答案。
您需要将所需的数据置于某个共享状态,然后从另一个线程访问该状态。当表单打开时,让后台线程等待 WaitHandle 并让用户与表单交互。当用户单击 Okay 时,您首先填充共享状态,然后重置 WaitHandle。这将释放后台线程,然后从共享状态读取数据并继续执行。这是一个基本的序列图
Thread 1 Thread2
T0 -> Hits waitHandle
T1 -> blocked Launches Form
T2 -> User interacts with form
T3 -> Okay clicked
T4 -> Shared state is populated
T5 -> WaitHandle reset
T6 -> Continues
T7 -> Reads shared state
共享状态将位于 Thread1 和表单的父类中,并且应该受到锁保护。有大量关于锁定和 WaitHandles 的信息,但这里有来自 Joe Albahari 的精彩入门
看看这个:http: //msdn.microsoft.com/en-us/magazine/cc163328.aspx
这里有一些文字,所以我的回答不会自动转换为评论。