我該如何派遣代碼在以後運行?是這樣的:C#調度代碼在稍後運行?
ThreadPool.QueueUserWorkItem(callback, TimeSpan.FromSeconds(1)); // call callback() roughly one second from now
我該如何派遣代碼在以後運行?是這樣的:C#調度代碼在稍後運行?
ThreadPool.QueueUserWorkItem(callback, TimeSpan.FromSeconds(1)); // call callback() roughly one second from now
你可以嘗試以下方法:
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();
}
只要把睡在你的回調函數。如果您正在使用線程池或任務,則可能需要比開始之前發送的實際時間段更長的時間;這是因爲線程在隊列中時不會立即開始執行。
public static void MyCallback(object delay)
{
Thread.Sleep(((TimeSpan)delay).TotalMilliseconds);
... code ...
}
您可以使用匿名方法並使用較低級別的線程結構來執行上述操作。
new Thread(() => {
Thread.Sleep(delayMilliseconds);
callbackFunction();
}).Start();
您可以使用Timer類。