我想安排一个任务在x毫秒开始,并能够在开始之前(或只是在任务的开始)取消它。正确的方式来延迟任务的开始
第一次尝试将类似
var _cancelationTokenSource = new CancellationTokenSource();
var token = _cancelationTokenSource.Token;
Task.Factory.StartNew(() =>
{
token.ThrowIfCancellationRequested();
Thread.Sleep(100);
token.ThrowIfCancellationRequested();
}).ContinueWith(t =>
{
token.ThrowIfCancellationRequested();
DoWork();
token.ThrowIfCancellationRequested();
}, token);
但我觉得应该有一个更好的办法,因为这将使用一个线程,而在睡眠,在此期间,也可能被取消。
我的其他选择是什么?
它真的不开销玉米粥和读取真的很好(所以它是维护)。 – 2011-02-14 09:38:56
@Richard发起几百项任务并不罕见。而这段代码不会很好地处理它。 – CodesInChaos 2011-02-14 09:48:05
你可能最好使用[timer](http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx)。 – Massif 2011-02-14 09:38:21