我知道一個線程將在所有已分配的代碼完成時終止,但是如何使它停留在等待事件呢?下面是一個簡單的看看我的代碼,這樣你就可以更好地理解我的問題是什麼:防止線程結束
public static class TimeUpdater
{
static TimeUpdater()
{
//Initialize the Timer object
timer = new Timer();
timer.Interval = 1000;
timer.Tick += timer_Tick;
}
public static void StartTimer()
{
timer.Start();
}
private static void timer_Tick(object sender, EventArgs e)
{
//Do something
}
}
從主線程,這裏是怎麼了調用這些方法:
Thread timeThread = new Thread(TimeUpdater.StartTimer);
timeThread.Name = "Time Updater";
timeThread.Start();
這樣做是什麼它進入StartTimer()
方法內部,運行它,然後該線程終止,而不必進入事件處理程序timer_Tick
。如果我從主線程調用StartTimer()
,它工作正常。
任何人都可以發現問題?乾杯。
你爲什麼使用線程*和*計時器?爲什麼不使用定時器或只是一個線程? –
我正在使用一個線程和一個計時器,因爲我希望操作每秒鐘在輔助線程上運行。 – TheGateKeeper
你的意思是第三個線程?您已經有了一個輔助線程,即您開始的線程。計時器將在另一個線程上運行。這是你想要的嗎?如果是這樣,答案可能是讓第一個線程等待一個事件對象(ManualResetEvent或AutoResetEvent)並讓計時器滴答事件發出該事件對象的信號。 –