私には方法があります:
private static void Method()
{
Console.WriteLine("Method() started");
for (var i = 0; i < 20; i++)
{
Console.WriteLine("Method() Counter = " + i);
Thread.Sleep(500);
}
Console.WriteLine("Method() finished");
}
そして、このメソッドを新しいタスクで開始したいと思います。このような新しいタスクを開始できます
var task = Task.Factory.StartNew(new Action(Method));
またはこれ
var task = Task.Run(new Action(Method));
しかし、間に何らかの違いがあるTask.Run()
とはTask.Factory.StartNew()
。どちらもThreadPoolを使用しており、タスクのインスタンスを作成した直後にMethod()を開始します。最初のバリアントをいつ使用し、いつ2番目に使用するか?
StartNew
デフォルトで使用され、TaskScheduler.Current
これはスレッドプールである可能性がありますが、UIスレッドである可能性もあります。