【发布时间】:2012-01-19 17:50:10
【问题描述】:
我希望我的方法等待大约 500 毫秒,然后检查某些标志是否已更改。如何在不阻塞我的应用程序的其余部分的情况下完成此操作?
【问题讨论】:
-
这个问题被严重低估了;我们需要知道“应用程序的其余部分”是什么——它是否运行在同一个线程、不同的线程、不同的机器上,什么?也就是说,到目前为止,几乎所有的答案都是危险的。使用 DoEvents 或 Thread.Sleep 是最糟糕的做法,表明设计糟糕的应用程序存在严重的重入错误的危险。 Tudor 的答案是最好的:使用计时器。
-
另外,考虑研究 C# 5 的异步 CTP 版本。我们添加了控制流,让您可以轻松延迟 500 毫秒并从中断处继续,而不会阻塞任何线程或启动新线程消息循环。
标签: c# multithreading wait