我的System.Threading.Timer(它有一個回調)永遠不會可靠地觸發。這是我的編程任務的一部分,我輸入計時器應該從文本框運行的時間量。System.Threading.Timer回調永遠不會被調用
定時器聲明如下:
System.Threading.Timer timer = new System.Threading.Timer(WorkerObject.callback, null, delay, Timeout.Infinite);
和延遲是一個簡單的描述int
爲回調火在第一時間延遲(它應該只是一個觸發一次)。
回調方法是這樣的:
public static void callback(Object stateinfo)
{
stop = true;
}
而且,它設置一個標誌,真該停止的循環(正在由一個線程池線程上運行,實際上所有,停止線)。
循環是這樣的:
while (!stop)
{
currentTextbox.Invoke(new Action(delegate()
{
currentTextbox.AppendText((counter++) + Environment.NewLine);
currentTextbox.Update();
}));
}
我的問題是,stop
變量始終是超過5000毫秒的任何延遲假的。有沒有辦法「強制」回調始終開火?
這個問題可能不適用(我忘記了API)...但是你啓動計時器嗎? – Jaxidian
該程序只是打印出一個計數器,它不斷遞增,直到計時器停止。 System.Threading.Timer不需要啓動;它延遲後自動啓動(0爲無延遲,但在我的情況下,我指定了延遲) – docaholic
@Jaxidian:'System.Threading.Timer'在您創建時啓動。 –