【发布时间】:2013-04-10 11:11:16
【问题描述】:
我想在 2 个操作之间设置一个延迟而不让线程忙
workA();
Thread.Sleep(1000);
workB();
线程必须在 workA 之后退出并在延迟一段时间后执行 workB(可能在新线程中)。
我想知道是否有可能与此伪代码等价
workA();
Thread.BeginSleep(1000, workB); // callback
编辑 我的程序在 .NET 2.0 中
编辑 2: System.Timers.Timer.Elapsed 事件将在 1000 毫秒后引发事件。我不知道计时器线程是否会忙 1000 毫秒。 (所以我没有获得线程经济)
【问题讨论】:
-
不明白。您的 Thread.Sleep() 调用将在 2 个操作之间延迟,而不会保持线程忙碌。我误会你想要什么了吗?
-
是的,但是这段时间(1000 毫秒)的线程池将少 1 个可用线程。
-
你可能更喜欢
System.Threading.Timer- 不是System.Timers.Timer并且不 - 没有“计时器线程” - 等待在操作系统内核中控制 -
MSDN: Comparing the Timer Classes- 如果您有SynchronizationContext参与,System.Timers.Timer很有用。 -
感谢 Nicholas 的澄清
标签: .net multithreading