如何调度代码以便以后运行?类似的东西:
ThreadPool.QueueUserWorkItem(callback, TimeSpan.FromSeconds(1)); // call callback() roughly one second from now
答案 0 :(得分:1)
您可以尝试以下操作:
System.Threading.Timer _timeoutTimer;
//...
int timeout = (int)TimeSpan.FromSeconds(1).TotalMilliseconds;
_timeoutTimer = new System.Threading.Timer(OnTimerElapsed,
null, timeout, System.Threading.Timeout.Infinite);
//...
void OnTimerElapsed(object state) {
// do something
_timeoutTimer.Dispose();
}
答案 1 :(得分:0)
只需在回调函数中暂停一下。如果您使用的是Threadpool或Task,它可能需要比您在开始之前发送的实际时间跨度更长的时间;这是因为如果线程排队,线程将不会立即开始执行。
public static void MyCallback(object delay)
{
Thread.Sleep(((TimeSpan)delay).TotalMilliseconds);
... code ...
}
您可以使用匿名方法并使用较低级别的线程构造进行上述内联。
new Thread(() => {
Thread.Sleep(delayMilliseconds);
callbackFunction();
}).Start();
答案 2 :(得分:0)
您可以使用Timer类。