はじめまして、ろんと申します。
現在VB.netにてWindowsアプリケーションを開発しています。
そこで質問なのですが、System.Threading.Thread.Sleepを使用して待機中にWindowの閉じるボタンを押しても「応答なし」、となってしまいます。
sleep中に割り込みアプリケーションを強制終了させる事は可能なのでしょうか?
また可能でしたら、どのように実現するのでしょうか?
よろしくお願いします。
どのような処理構造になっているのか解りませんが、
マルチスレッドにしないと無理だと思います。
Sleep()を必要とする処理系をスレッドに追い出し、
ウィンドウの一般的操作は通常の処理で行う。
スレッドに追い出した処理との同期が必要ですが・・・
ご検討下さい。
以上。
下記のようにループ中にDoEventsとSleep関数を併用するのでは
だめでしょうか?
私は、下記の方法で待機しています。他の処理も受付、CPUの負担も軽減
できます。
Private Sub WaitTime(st As Long)
'指定の時間待つ(1/1000 秒単位で指定)
Dim lngSt As Long
lngSt = timeGetTime
Do While timeGetTime - lngSt < st
DoEvents
Sleep 50
Loop
End Sub
失礼しました。 .NET でしたね。
Private Sub WaitTime(ByVal st As Long)
Dim lngSt As Long
lngSt = System.Environment.TickCount
Do While System.Environment.TickCount - lngSt < st
Application.DoEvents()
System.Threading.Thread.Sleep(10)
Loop
End Sub