我想知道是否有某種方法暫時暫停計時器,然後重新啓動它。暫時暫停System.Timers.Timer在C#
我有一個方法「DoSomething()」,它可以從一個定時器事件中或稱爲「Chooser()」的不同方法中調用。應該從定時器或Chooser()中調用DoSomething(),但不應該調用兩次。
問題是Chooser()需要一些時間來決定是否應該調用DoSomething()。當Chooser()決定是否應該調用DoSomething()時,DoSomething()不應該被調用。這會導致DoSomething()被調用兩次。
如果選擇器()確實選擇調用DoSomething(),它將禁用定時器。同樣,如果定時器調用DoSomething(),它將禁用Chooser()中的代碼。
我想在選擇器()的開始處移除timer eventhandler,然後在Chooser()的末尾重新添加它。但是,這不起作用,因爲計時器可能會在Chooser()運行時觸發事件,並且不會處理該事件。
我不認爲我可以使用鎖,因爲我只想調用DoSomething()一次。
如果我可以在Chooser()的開頭暫停計時器,然後在最後再次啓動計時器,這將是理想的,但我不認爲存在這種可能性。
我可以添加一個標誌,但我想知道是否有更好的。
有一個小窗口,可以使定時器在停止後觸發。考慮你的解決方案的可能性。 – hatchet