ぽんこつプログラマーの日々のまとめ
System.Threading.Tasks.Task でマルチスレッド処理を行う備忘録。

using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      hoge();
      Console.ReadLine();
    }

    static void hoge()
    {
      var ts = new List();
      for (int i = 0; i < 10; i++)
        ts.Add(Task.Run(() => Thread.Sleep(500)));
      Task.WaitAll(ts.ToArray());
    }

  }
}

Thread.Sleep のところで何かしら重たい処理を行う。
すべてのスレッドの処理終了を待つには Task.WaitAll を使うのだが、引数に Task のインスタンスが必要になるので List<Task> に格納しておりやや冗長である。

Linq を使えばこう。
    static void hoge()
    {
      Task.WaitAll(Enumerable.Range(0, 10).Select(n => Task.Run(() => Thread.Sleep(500))).ToArray());
    }
1行になったよ やったね!

Add Comments

名前
 
  絵文字
 
 
webmaster

Redmusk

最西端の地で釣りとギターとゲームをこよなく愛する本業ぽんこつプログラマー。今を生きるを座右の銘とし日々快楽だけを求め切磋琢磨しております。

soundcloud