2011-12-01 100 views
1

我有一個函數(稱之爲Process()),它執行一些處理。我想在一個點上調用它,同時啓動一個計時器。然後我只想在經過100秒後調用下一個語句(當然功能已經完成)。我不想睡​​100秒,因爲睡眠表明處理器正在等待 - 我希望處理函數在計時器滴答作響時運行。功能運行時的C#定時器

我不知道我應該用什麼。有人說使用任務。有什麼建議麼?

回答

1
int Ticks = Environment.TickCount; 

ReallyBigFunction(); 

if(Environment.TickCount - Ticks > 100*1000) 
{ 
    // The function took more than 100 seconds 
} 
0

我建議在另一個線程上關閉該功能,然後在主線程中休眠100秒。當主線程再次喚醒時,您可以檢查函數線程是否已完成並將其重新加入主程序流。

0

如果你仍然想的過程中運行,你可能要開始一個新的線程,將等待你所需要的時間:

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

注:目前的代碼就可以訪問到該接口。