【发布时间】:2012-08-07 09:27:10
【问题描述】:
我是 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
【问题讨论】:
-
Dispatcher 是未在 Mono 中实现的 WPF 框架的一部分。您尝试使用哪种 GUI 框架?可能是 Windows 窗体,然后是您感兴趣的方法:msdn.microsoft.com/en-us/library/…
-
我不明白你的意思“你想使用什么样的 GUI 框架?”你能详细说明一下吗?
标签: c#-4.0 mono monodevelop