を使用して不明瞭な結果は、私はタスクを並列テストするには、このコードをC#で非同期プログラミングについての学習、および書かれてるライブラリ(コンソールアプリケーション):タスク - ランダム
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
var opr1 = new SlowOperation();
var opr2 = new SlowOperation();
//TASK
Console.WriteLine("Started processing using TASK. Start: {0}", sw.Elapsed);
sw.Start();
Task.Factory.StartNew(() => opr1.PerformSlowOperation(1));
Task.Factory.StartNew(() => opr2.PerformSlowOperation(2));
Console.WriteLine("Stopped processing using TASK. Stop: {0}", sw.Elapsed);
sw.Stop();
}
遅い操作は次のとおりです。
public class SlowOperation
{
public void PerformSlowOperation(int id)
{
var rand = new Random();
double sum = 0;
for (int i = 0; i < 100000000; i++)
{
var number = Convert.ToDouble(rand.Next(100))/100;
sum += number;
}
Console.WriteLine("Finished processing operation no. {0}. Final sum calculated is: {1}", id, sum.ToString("0.##"));
}
}
SlowOperationクラスの各インスタンスによって生成された合計がまったく同じ理由を理解できたら助けてください。
なぜあなたはたくさんのタスクを開始してすぐにストップウォッチを無効にし、それらが終了するまで待たずに終了したと言いますか? –