替代.NET 2.0的Dispatcher类

时间:2014-01-13 15:01:59

标签: c# multithreading dispatcher bootstrapper .net-framework-version

我是线程新手。在学习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的功能?

2 个答案:

答案 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,取而代之的是原生线程