2014-10-30 40 views
4

我已經查看了TaskTimer類API,但未能找到有關如何安排Task以備將來執行的信息。 使用Timer類,我可以安排線程以備將來執行,但我需要安排Task s。 Task.Delay(...)方法,但不確定延遲是否類似於調度。調度任務以供將來執行

編輯(澄清):我想啓動x分鐘後任務。

+0

這取決於你正在嘗試做的。你想在某段時間過後發生什麼事?使用計時器。 「未來執行」究竟意味着什麼? – 2014-10-30 14:54:29

+0

是的,讓我們說30分鐘後,我想啓動任務做一些操作。 – newprint 2014-10-30 14:55:34

+1

'Task.Delay'內部使用'Timer',是的答案是你正在尋找'Timer'。在.net框架中有幾個計時器,爲您的場景選擇合適的計時器。 – 2014-10-30 14:59:26

回答

4

您應該使用Task.Delay(其內部是使用System.Threading.Timer實現):

async Task Foo() 
{ 
    await Task.Delay(TimeSpan.FromMinutes(30)); 
    // Do something 
} 

雖然 「已執行」 的延遲被使用there is no thread。當等待結束後,它將被安排執行。

2

我會使用this Timer(System.Timers.Timer)來代替。使用起來更簡單一些。將時間間隔設置爲30並啓動計時器,確保已運行的事件調用您想要發生的方法。如果您只希望發生一次而不是每三十分鐘一次,您可以在之後停止。從鏈接的MSDN頁面

代碼示例:

// Create a timer with a two second interval. 
aTimer = new System.Timers.Timer(2000); 
// Hook up the Elapsed event for the timer. 
aTimer.Elapsed += OnTimedEvent; 
aTimer.Enabled = true;