【发布时间】:2014-09-22 16:04:49
【问题描述】:
在 WinForms 应用程序中,我启动了将数据添加到根 XElement 的工作线程。
然后在主线程中我需要等待工作线程完成它的工作(以完成XElement),并将此 XElement 输出到textarea。
如果我在主线程上调用.Join() - 它会冻结,直到另一个线程停止(并且用户无法单击主窗体上的任何按钮)。
是否可以在等待另一个线程完成工作时解除阻塞主线程?
我试过了:
1.
BeginInvoke(new Action(() => {
XmlManager.whReady.WaitOne();
xDocString = xResultDoc.ToString();
}));
2.
string xDocString = String.Empty;
new Thread(() => { xDocString = XelementToString(); }).Start();
txtXmlTree.Text = xDocString;
public string XelementToString() {
XmlManager.whReady.WaitOne();
return xResultDoc.ToString();
}
但是没有效果。
EventWaitHandle XmlManager.whReady.WaitOne(); 在工作线程关闭之前正在成为.Set()。
【问题讨论】:
标签: c# .net multithreading winforms