基本的にこれは私がテストしてきたコードです
static void Main(string[] args)
{
var result = 0;
EventWaitHandle calcDone = new EventWaitHandle(false, EventResetMode.ManualReset);
ThreadPool.QueueUserWorkItem((x) => { result += GetNumer(); calcDone.Set(); });
var result2 = 15;
calcDone.WaitOne();
result += result2;
Console.WriteLine(result2);
}
static int GetNumer()
{
Thread.Sleep(2000);
return 2000;
}
したがって、基本的には 2015 がコンソール ウィンドウに書き込まれると予想されますが、そうではなく、15 だけが出力されます。WaitOne
結果が返されてインクリメントされるまでGetNumber
実行が停止されるため、正常に動作していますが、その後何が起こるかわかりません。コードをデバッグして段階的に進めれば問題ありませんが、コードを実行すると 15 が出力されます。タスクではなくスレッド プールを使用する理由を聞かないでください。これはテスト目的のためだけです。