点击线程传递值

时间:2012-07-16 12:16:18

标签: c# wpf multithreading forms class

所以让我说我有3个线程来运行一个类的实例。该课程将执行几项任务。当类到达某个点时,它应该打开一个窗口,用户可以在其中输入内容,然后在按钮上单击表单将关闭,并且线程应该执行最后一个任务,其中包含用户输入的值。

  1. 开始3线程。 (每个线程都有不同的值。)
  2. 执行多项任务。
  3. 打开窗口并等待输入。
  4. 用户输入一些数据并单击“确定”。
  5. 线程获取数据并执行一些额外任务。
  6. 完成。
  7. 那么,我怎样才能将输入的值传递给线程/类?

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

    我期待着一些答案。

2 个答案:

答案 0 :(得分:1)

您需要将所需的数据置于某个共享状态,然后从另一个线程访问该状态。当表单打开时,后台线程等待WaitHandle&让用户与表单进行交互。当用户单击“确定”时,首先填充共享状态,然后重置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有大量的信息,但是here's a great primer from Joe Albahari

答案 1 :(得分:0)

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

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