我有一個函數(稱之爲Process()),它執行一些處理。我想在一個點上調用它,同時啓動一個計時器。然後我只想在經過100秒後調用下一個語句(當然功能已經完成)。我不想睡100秒,因爲睡眠表明處理器正在等待 - 我希望處理函數在計時器滴答作響時運行。功能運行時的C#定時器
我不知道我應該用什麼。有人說使用任務。有什麼建議麼?
我有一個函數(稱之爲Process()),它執行一些處理。我想在一個點上調用它,同時啓動一個計時器。然後我只想在經過100秒後調用下一個語句(當然功能已經完成)。我不想睡100秒,因爲睡眠表明處理器正在等待 - 我希望處理函數在計時器滴答作響時運行。功能運行時的C#定時器
我不知道我應該用什麼。有人說使用任務。有什麼建議麼?
int Ticks = Environment.TickCount;
ReallyBigFunction();
if(Environment.TickCount - Ticks > 100*1000)
{
// The function took more than 100 seconds
}
我建議在另一個線程上關閉該功能,然後在主線程中休眠100秒。當主線程再次喚醒時,您可以檢查函數線程是否已完成並將其重新加入主程序流。
如果你仍然想的過程中運行,你可能要開始一個新的線程,將等待你所需要的時間:
ThreadStart start = delegate()
{
Thread.Sleep(100000);
Dispatcher.Invoke(DispatcherPriority.Normal,
new Action(ThreadDoSomething)); //The function who will execute what you want to do.
};
new Thread(start).Start();
注:目前的代碼就可以訪問到該接口。