私は UBUNTU と同様に Monodevelop を初めて使用し、.Net 並列処理を調査するために c# を使用してデスクトップ アプリケーションを開発しようとしています。Parallel.For ループを使用すると、1 つの問題が発生します。私がインターネットで読んだように、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