我想安排一個任務在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