所以基本上这是我一直在测试的代码
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。我在这里做错了吗?请不要问我为什么使用线程池而不是任务。这只是为了测试目的。