簡體   English   中英

使用 C# 定時器停止執行程序

[英]Using C# Timer to stop executing a Program

我想要一個程序停止執行一段時間。 我希望這種情況定期發生。 例如,我希望一個程序運行 5 分鍾,然后它應該停止 2 分鍾,然后再繼續運行 5 分鍾。 這可以通過 C# Timer 類實現嗎?

您正在尋找Thread.Sleep()傳遞暫停執行的毫秒數。

我不確定這是理想的行為,所以如果你更新你的問題,你可能會得到比這更好的答案。

您可以使用一個定時器,它的作用只是切換一個變量(例如 bool)。 如果應用程序使用了該布爾值,則您可以使用它來控制應用程序是否“正在運行”。

我建議使用它而不是Thread.Sleep()因為至少您的應用程序仍然可以響應。 如果你想暫停一個非 UI 線程,那么Thread.Sleep()就足夠了,但不要在 UI 線程上調用Thread.Sleep() ,即使持續時間很短。

正如之前的答案所說:什么是“停止”? 用戶不能使用程序 2 分鍾? 如果是這樣,您可以彈出一個模態對話框(帶有文本)並且用戶無法關閉它。

如果這是一個 Windows 窗體應用程序,您可能需要考慮將其移動到線程執行模型中。 您可以使用BackgroundWorker控件、使用ThreadPool類的線程池、異步方法BeginEnd (例如Stream.BeginWrite )或通過自己手動處理線程(稍微復雜一點)來執行此操作。

BackgroundWorker將提供最簡單的開發形式,允許您處理異步代碼的事件,並更新進度條或標簽以顯示執行的當前狀態。 這將允許您使用Thread.Sleep而不會系統警告用戶應用程序已掛起。

基本上,在 Windows 窗體開發中,您應該使用某種形式的線程來處理長時間執行。

您可以使用 Window.Forms.Timer 每 1000 毫秒注冊一個回調

        private int counter;
        void StartTimer()
        {
            counter = 0;
            Timer timer = new Timer();
            timer.Interval = 1000;
            timer.Enabled = true;
            timer.Tick += Timer_Tick;
        }

在事件函數中,簡單地增加一個在條件滿足時執行的全局計數器變量


        private void Timer_Tick(object sender, EventArgs e)
        {
            counter++;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM