none
[VB2010] 暫停問題 RRS feed

  • 問題

  • HI~各位好

    我想問一下,如果有2個timer,timerA跟timerB

    如果想讓TimmerA 停一下(大約5s),

    就會用Threading.Thread.Sleep(5000),但就TimerB也會停。

    請問,有沒有方法可以讓TimerA停一會,但不影響TimerB?

     

    補充:假設,如果Threading.Thread.Sleep(5000)不寫在 Timer,改寫在其他事件中,怎樣才能不影響Timer?

     


    2011年12月25日 下午 04:41

解答

  • 這牽涉你用的Timer.

    Forms.Timer 依賴的是訊息迴圈. 也就是說當你在同一個緒中啟用兩個Forms.Timer (事實上 Forms.Timer在多緒環境也不適合用). 兩個Forms.Timer 都會靠著該應用程式定義域中的訊息迴圈幫浦運作, 也就是說, 在此緒中任何一個 Thread.Sleep() 都會影響到所有依賴訊息幫浦迴圈的物件.

    正確的解決方法是你應該用其它Timer來替代 (1) Timers.Timer (2) Threading.Timer

    以上兩個Timer的範例

    三種時間人《.NET中的Timer(2)》

    三種時間人《.NET中的Timer(3)》


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月26日 上午 04:30
    版主

所有回覆

  •    Dim myTimer As New System.Windows.Forms.Timer()
        '按鈕Click事件
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            AddHandler myTimer.Tick, AddressOf secondCount
            myTimer.Interval = 1000
    
    
            TimerA.Enabled = False '停用TimerA
            myTimer.Enabled = True '啟動另一計時器
    
    
    
    
    
    
        End Sub
    
        Dim count As Integer = 0
        Private Function secondCount() As Object
    
            count = count + 1
            If count = 5 Then '五秒後再啟動TimerA
                TimerA.Enabled = True
    
                myTimer.Enabled = False
                count = 0
            End If
    
        End Function
    
    
     
    
     
    


    2011年12月25日 下午 06:06
  • 這牽涉你用的Timer.

    Forms.Timer 依賴的是訊息迴圈. 也就是說當你在同一個緒中啟用兩個Forms.Timer (事實上 Forms.Timer在多緒環境也不適合用). 兩個Forms.Timer 都會靠著該應用程式定義域中的訊息迴圈幫浦運作, 也就是說, 在此緒中任何一個 Thread.Sleep() 都會影響到所有依賴訊息幫浦迴圈的物件.

    正確的解決方法是你應該用其它Timer來替代 (1) Timers.Timer (2) Threading.Timer

    以上兩個Timer的範例

    三種時間人《.NET中的Timer(2)》

    三種時間人《.NET中的Timer(3)》


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月26日 上午 04:30
    版主