我正在寻找一些美好而简单的东西。例如:
RunAfter(3, delegate() { z = 5; }); // run after 3 seconds
FnThatTakes5Seconds();
在我的情况下,我想测试一些线程代码,并在另一个函数调用的中间发生一些事情。
答案 0 :(得分:1)
public static void RunAfter(int millisecondTimeout,
System.Threading.ThreadStart method)
{
System.Threading.Thread t = new System.Threading.Thread(() =>
{
System.Threading.Thread.Sleep(millisecondTimeout);
method();
});
t.Start();
}
然后你可以做
RunAfter(3000, () => z = 5;);
答案 1 :(得分:0)
我会使用只触发一次并立即启动的System.Threading.Timer。
System.Threading.Timer _timer = new Timer(ProcessTimer, null, 3000, Timeout.Infinite);
答案 2 :(得分:0)
你也可以使用WaitHandle等到后台工作者发生超时。
ManualResetEvent objResetEvent = new ManualResetEvent();
objResetEvent.WaitOne(timeout, ...);