sleep中に割り込むには?


ろん  2004-05-15 05:34:51  No: 113253  IP: [192.*.*.*]

はじめまして、ろんと申します。

現在VB.netにてWindowsアプリケーションを開発しています。
そこで質問なのですが、System.Threading.Thread.Sleepを使用して待機中にWindowの閉じるボタンを押しても「応答なし」、となってしまいます。
sleep中に割り込みアプリケーションを強制終了させる事は可能なのでしょうか?
また可能でしたら、どのように実現するのでしょうか?

よろしくお願いします。

編集 削除
岡田 之仁  2004-05-15 09:28:27  No: 113254  IP: [192.*.*.*]

どのような処理構造になっているのか解りませんが、
マルチスレッドにしないと無理だと思います。

Sleep()を必要とする処理系をスレッドに追い出し、
ウィンドウの一般的操作は通常の処理で行う。
スレッドに追い出した処理との同期が必要ですが・・・

ご検討下さい。

以上。

編集 削除
花ちゃん  2004-05-16 09:51:22  No: 113255  IP: [192.*.*.*]

下記のようにループ中に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

編集 削除
花ちゃん  2004-05-16 09:55:23  No: 113256  IP: [192.*.*.*]

失礼しました。  .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

編集 削除