2016-09-29 72 views
0

主題:哪種方法可以在c#timer或thread中重複調用多個方法?

for (; ;) 
{ 
    Thread newThread = new Thread(MainWindow.LumEnergyInformation); 
    newThread.Start(); 
    InitializeComponent(); 
} 

定時器:

Timer myTimer = new Timer(); 
myTimer.Elapsed += new ElapsedEventHandler(LumEnergyInformation); 
myTimer.Interval = 10000; // in milliseconds 
/myTimer.Start(); 
+2

當然,這取決於你的方法做了什麼?如果它需要很長時間,你只需要一遍又一遍,或者它的速度很快,並且你想要它x秒或?什麼? – BugFinder

+0

在x(60)秒內以及如何在定時器中實現多種方法 –

回答

0

在這兩種情況下,螺紋或定時器,你的方法將只是在不同的線程中執行,在與其他線程並行。

的主要區別是:

  • 線程將使用專用線程
  • 定時器將使用線程池,線程而佔用的線程將被用於該任務只有當法任務運行。在一個間隔和下一個間隔之間,其他人可以使用同一個線程。

因此,一切都歸結於您的用例:如果您的應用程序使用大量線程計時器可以更高效。如果您調用的方法需要很長時間,那麼使用Timer代替Thread將沒有好處,因爲線程不會被回收。

0

問題應該是 - 如果使用方法是線程安全,應該選擇Timer或Thread。因爲這是最重要的考慮。那麼你的方法是否需要自己專注的東西?它需要使用大量數據(在許多對象的意義上)還是僅僅使用一個?

重要的問題是,沒有方法的結果可以運行的主要內容?

如果你可以回答兩個問題都是,那麼就用線程進行直線前進。如果不是這樣,tryx會評估爲回答這兩個問題所需的努力,並且回答問題。

原因線程VS定時器

定時器是primarly只是一個巨大的事件結構。 Timer.Tick是事件驅動的,Timer.End是事件驅動的等等。全部都是通過基於操作系統的控制。另外,如果計時器想要執行它的DoSomething,你的主應用程序必須停止並執行代碼。

所以,如果你的代碼是100%獨立或線程安全==>去與線程。

相關問題