我是 Monodevelop 和 UBUNTU 的新手,现在我正在尝试使用 c# 开发一个桌面应用程序来研究 .Net 并行性。当我使用 Parallel.For 循环时,我遇到了一个问题。正如我在网上看到的,Dispatcher.beginInvoke 会将工作线程完成的工作委托给 UI 线程。
该文章还说,如果您不使用调度程序,它将通过桌面应用程序的错误。但它对我来说仍然很好。我不明白这里发生了什么。(这是我正在使用的链接——http: //blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework-4-getting-started.aspx)
这是代码:
Parallel.For(2, 20, (i) =>
{
var result = SumRootN(i);
this.Dispatcher.BeginInvoke(new Action(() =>
textBlock1.Text += "root " + i.ToString() + " " +
result.ToString() + Environment.NewLine)
, null);
});
如果我取出 "this.Dispatcher.BeginInvoke(new Action(() =>" 语句仍然按预期工作,但根据我上面提到的链接它不应该工作。
细节:
Monodevelop 版本 - monodevelop 2.8.6.3+dfsg-2
Ubuntu 版本 - 12.4