C#将代码分派到以后运行?

C#将代码分派到以后运行?,c#,dispatch,C#,Dispatch,如何分派代码以在以后运行?比如: ThreadPool.QueueUserWorkItem(callback, TimeSpan.FromSeconds(1)); // call callback() roughly one second from now 您可以尝试以下操作: System.Threading.Timer _timeoutTimer; //... int timeout = (int)TimeSpan.FromSeconds(1).TotalMilliseconds; _ti

如何分派代码以在以后运行?比如:

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();
}

您可以尝试以下操作:

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();

只需在回调函数中设置睡眠。如果您使用的是线程池或任务,则在开始之前可能需要比您发送的实际时间跨度更长的时间;这是因为如果线程排队,它不会立即开始执行

public static void MyCallback(object delay)
{
    Thread.Sleep(((TimeSpan)delay).TotalMilliseconds);
    ... code ...
}
您可以使用匿名方法内联执行上述操作,并使用较低级别的线程构造

new Thread(() => {
    Thread.Sleep(delayMilliseconds);
    callbackFunction();
}).Start();
您可以使用该类进行此操作。

您可以使用该类进行此操作