- ベストアンサー
スリープ中に割り込んで中止させたい
VB2010で次の様なSleepを使ったプログラムなんですが途中で中断させることはできるでしょうか。 For I=1 to 100 System.Threading.Thread.Sleep(1000) Next
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>Sleep(1000)の間は止められなくても,For~Next間でどうして止められないのかと思いました。 Loop処理中は、それだけに専念するので他の処理を受付けないからです。 フラグとDoEvents()を使って中止させる例です。 private ExitFlag As Boolean = False 'ボタンのClockイベント Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) ExitFlag = True End Sub ' Forの処理の部分 ' For I=1 to 100 System.Threading.Thread.Sleep(1000) Application.DoEvents() '他のWindows操作を可能にするため If ExitFlag Then Exit For Next
その他の回答 (1)
- Yune-Kichi
- ベストアンサー率74% (465/626)
回答No.1
Sleepは途中で止めることが出来ません。 AutoResetEventのWaitOneで最大1s待つようにすることで代替することが可能かと。
質問者
お礼
回答ありがとうございます。意味が直ぐに分かりませんので調べてみます。 Sleep(1000)の間は止められなくても,For~Next間でどうして止められないのかと思いました。
お礼
出来ました。ありがとうございました。