• ベストアンサー

スリープ中に割り込んで中止させたい

VB2010で次の様なSleepを使ったプログラムなんですが途中で中断させることはできるでしょうか。 For I=1 to 100 System.Threading.Thread.Sleep(1000) Next

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

noname#185525
質問者

お礼

出来ました。ありがとうございました。

その他の回答 (1)

回答No.1

Sleepは途中で止めることが出来ません。 AutoResetEventのWaitOneで最大1s待つようにすることで代替することが可能かと。

noname#185525
質問者

お礼

回答ありがとうございます。意味が直ぐに分かりませんので調べてみます。 Sleep(1000)の間は止められなくても,For~Next間でどうして止められないのかと思いました。

関連するQ&A