none
暫停跟停止問題 RRS feed

  • 問題

  • 因為 在 暫停程式 跟 停止程式 上 找不到合適的指令

    希望各位高手給個方向謝謝

    程式碼如下:

    Dim 停止 As Boolean = False
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
       
    事件一
    {小事件a
    小事件b
    小事件c
    }
    
    Application.DoEvents()
    If (停止 = True) Then
    Exit sub
    End If
    
    事件二
    
    End Sub
    
    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
            If (e.KeyCode = Keys.S) Then
                停止 = True
            End If
    
    End Sub


    問題1:

    使用 Application.DoEvents() 的指令 可以讓程式停止執行 然後不執行 事件二

    是否有 暫停或繼續的指令 暫停程序 然後再按下一個按鈕 繼續執行 事件二

    問題2:

    是否有指令 可以在 隨時想停的時間點 停止程式

    比如在執行 小事件a 時 就只停止程式

    還是只能 一行一行 插入 Application.DoEvents()

    先行查過資料 還是沒有結果

    希望高手解惑謝謝




    2016年10月16日 下午 03:00

解答

  • 要能夠做到暫停, 要被暫停的那個程序必須要執行在非 UI 介面上. 不然你的 UI 就會停止回應.


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

    • 已標示為解答 曲盈 2016年10月17日 下午 01:27
    2016年10月16日 下午 03:20
    版主
  • 這問題曾經困擾過我

    得到的答案也是當時我無法駕馭負荷的


    另外~就如你程式寫法的方式告知

    使用上就是必須去埋"判定",也代表著非即時性

    必須在程式執行到"判斷處"才能停止


    好啦~不多說了~

    你自己看看好不好用

    至少可以省下不少時間

     

     Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
          
     MsgBox("程式暫停", , "程式目前狀態")

    End Sub


    這方法有點旁門左道啦,我是無意間觀察到MsgBox有這樣的特性,剛好有點符合我需要的功能
    當然是否有沒什麼不良影響,或須注意的地方,可能就要請比較懂的前輩說明一下了,

    最重要的一點,就是不用埋"判斷",完全即時

    我自己也在想~真的要自己做~是不是可以朝MsgBox的技術方向去研究...

    畢竟~我也是解決問題後~就懶了的人....

    不知是否符合你的做法呢?

    • 已標示為解答 曲盈 2016年10月17日 下午 01:27
    2016年10月17日 上午 02:35
  • 簡單的做法可以透過變數來控制, 例如當Disabled變數為true時就不引發事件2, 像這樣:

    If (Disable <> True) Then
        事件二
    End If
    
    
    
    

    • 已標示為解答 曲盈 2016年10月17日 下午 01:27
    2016年10月17日 上午 08:30

所有回覆

  • 要能夠做到暫停, 要被暫停的那個程序必須要執行在非 UI 介面上. 不然你的 UI 就會停止回應.


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

    • 已標示為解答 曲盈 2016年10月17日 下午 01:27
    2016年10月16日 下午 03:20
    版主
  • 這問題曾經困擾過我

    得到的答案也是當時我無法駕馭負荷的


    另外~就如你程式寫法的方式告知

    使用上就是必須去埋"判定",也代表著非即時性

    必須在程式執行到"判斷處"才能停止


    好啦~不多說了~

    你自己看看好不好用

    至少可以省下不少時間

     

     Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
          
     MsgBox("程式暫停", , "程式目前狀態")

    End Sub


    這方法有點旁門左道啦,我是無意間觀察到MsgBox有這樣的特性,剛好有點符合我需要的功能
    當然是否有沒什麼不良影響,或須注意的地方,可能就要請比較懂的前輩說明一下了,

    最重要的一點,就是不用埋"判斷",完全即時

    我自己也在想~真的要自己做~是不是可以朝MsgBox的技術方向去研究...

    畢竟~我也是解決問題後~就懶了的人....

    不知是否符合你的做法呢?

    • 已標示為解答 曲盈 2016年10月17日 下午 01:27
    2016年10月17日 上午 02:35
  • 簡單的做法可以透過變數來控制, 例如當Disabled變數為true時就不引發事件2, 像這樣:

    If (Disable <> True) Then
        事件二
    End If
    
    
    
    

    • 已標示為解答 曲盈 2016年10月17日 下午 01:27
    2016年10月17日 上午 08:30
  • 謝謝 Bill Chung 給的指引 因為是新手 不太了解非 UI 介面 可能要花點時間研究研究

    謝謝 魚骨頭  在 (請問vb.net 能設定熱鍵讓程式暫停嗎) 這篇   有看到你提供的方法

    判斷完全及時 非常管用 但是還是不了解其原因

    謝謝 tihs 用您的方法也成功了

    不過我想模擬類似遊戲的暫停跟繼續 可能要再研究看看



    2016年10月17日 下午 01:40
  • 你可以在更釐清問題之後, 繼續討論.

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

    2016年10月17日 下午 01:53
    版主
  • 這個比較正規的做法看看

    我也在學習中

    http://blog.csdn.net/tyouvivi/article/details/2298059

    執行緒的部分~我就真的不懂了

    若有問題~就請別的前輩回覆了

    2016年10月18日 上午 01:55
  • 謝謝 魚骨頭

    出差16天後才回來

    有時間再試試看

    2016年11月2日 上午 11:47