Parallel中にUIコントロールのInvokeを操作したい場合

  • 2012.08.01 Wednesday
  • 14:31
 
通常Parallel処理中にUIのInvokeを行おうとすると、
お互いが処理待ちになるデッドロック状態となります。

そこで見つけたのがこのページ

ようはSystem.Threading.Tasks.Task.Factory.StartNewで
parallel自体を別threadにしてしまえばいいというやり方。

var task=System.Threading.Tasks.Task.Factory.StartNew(() =>
{
    Parallel.ForEach(hogeList, (n) =>
    {
    //control.Invokeを伴う処理
    });
});
task.Wait();



ただし、
データとタスクの並列化における注意点

に記載されているとおり、「UI スレッドでの並列ループの実行は避ける 」のが
ただしいのでしょうね。

スポンサーサイト

  • 2017.11.25 Saturday
  • 14:31
  • 0
    • -
    • -
    • -
    コメント
    コメントする








        
    この記事のトラックバックURL
    トラックバック