-1
我在我的控制檯應用程序的主要方法中使用Timer。現在我使用一些while循環來讓我的主線程保持活躍狀態,這是我在Web上發現的。因爲當它死了,我的線程,執行方法,我傳遞給定時器也死了。使用Threading.Timer保持主線程活着c#
問題:是阻塞我的主線程還是可以使用這種方式?還是有更好的方法來保持主線程活着而不阻塞任何東西?
public void Run()
{
Logger.Trace("Timer Started.");
Timer.Change(0, Timeout.Infinite);
Console.WriteLine("Press ESC to stop...");
while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape))
{ }
}
您可以使用調度計時器會做一些背景等工作的普通的方式,並會調用到你的主線程,當有需要(例如每個1s):http://www.wpf-tutorial.com/misc/dispatchertimer/ – sTrenat
@sTrenat它將是控制檯或Windows服務應用程序和Threading.Timer已經完成了我需要的所有工作。我只是想知道一個線程安全的方式來保持我的主線程而不阻塞它。 –
*「是否可以使用這種方式」* - 沒關係。在控制檯應用程序結束時使用['Console.ReadKey'](https://msdn.microsoft.com/zh-cn/library/x3h8xffw(v = vs.110).aspx)是防止它出現的常用方法精加工。 – Sinatr