スポンサーサイト

  • 2016.05.30 Monday

一定期間更新がないため広告を表示しています

  • 0
    • -
    • -
    • -

    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 スレッドでの並列ループの実行は避ける 」のが
    ただしいのでしょうね。

    スポンサーサイト

    • 2016.05.30 Monday
    • 14:31
    • 0
      • -
      • -
      • -
      コメント
      コメントする








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

      PR

      calendar

      S M T W T F S
        12345
      6789101112
      13141516171819
      20212223242526
      2728293031  
      << August 2017 >>

      selected entries

      categories

      archives

      recommend

      recommend

      recommend

      recommend

      profile

      search this site.

      others

      mobile

      qrcode

      powered

      無料ブログ作成サービス JUGEM