0

所以假设我有 3 个线程从一个类中运行一个实例。该类将执行多项任务。当类达到一个点时,它应该打开一个用户可以输入内容的窗口,然后单击按钮,表单将关闭,线程应该使用用户输入的值执行最后一个任务。

  1. 启动 3 线程。(每个线程都有不同的值。)
  2. 执行多项任务。
  3. 打开窗口并等待输入。
  4. 用户输入一些数据并单击“确定”。
  5. 线程获取数据并执行一些附加任务。
  6. 完成的。

那么,如何将输入的值传递给线程/类?

信息:这是 WPF,而不是 WinForms。

我期待一些答案。

4

2 回答 2

1

您需要将所需的数据置于某个共享状态,然后从另一个线程访问该状态。当表单打开时,让后台线程等待 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 的精彩入门

于 2012-07-16T12:41:31.057 回答
0

看看这个:http: //msdn.microsoft.com/en-us/magazine/cc163328.aspx

这里有一些文字,所以我的回答不会自动转换为评论。

于 2012-07-16T12:23:15.063 回答