我是线程新手。在学习WPF示例(A Wix Bootstrapper应用程序)的同时,我在Run()方法中遇到过使用System.Windows.Threading.Dispatcher的方法:
MyDispatcher = Dispatcher.CurrentDispatcher;
.
.
//rest of the code
.
Dispatcher.Run(); //This I believe invoke the app in a thread (plz correct me if I'm wrong).
要求:我正在尝试在Windows窗体应用程序中实现相同的功能(由于某些原因必须使用Net FW 2.0),其中我只有System.Threading命名空间。
* 问题: *如何使用System.Threading命名空间实现类似Dispatcher的功能?
答案 0 :(得分:1)
请改用Control.Invoke
方法和Control.InvokeRequired
属性。
答案 1 :(得分:1)
以下是.NET 2.0的示例代码
// Called from any method
new Thread(() => { UpdateRequest(); }).Start();
// Background activity
private void UpdateRequest() {
UpdateUI("new text everytime" + DateTime.Now.ToString());
}
private void UpdateUI(string request)
{
if (control.InvokeRequired)
{
this.Invoke(new Delegate(UpdateUI), new object[] { request });
}
}
更新:因为没有使用过.NET 2.0而意外使用了TPL,取而代之的是原生线程