所以让我说我有3个线程来运行一个类的实例。该课程将执行几项任务。当类到达某个点时,它应该打开一个窗口,用户可以在其中输入内容,然后在按钮上单击表单将关闭,并且线程应该执行最后一个任务,其中包含用户输入的值。
那么,我怎样才能将输入的值传递给线程/类?
信息:这是WPF,而不是WinForms。
我期待着一些答案。
答案 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
这是一些文字,所以我的答案不会自动转换为评论。