プログラムの強制終了 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 ヴァン  (社会人)
投稿日時
2009/10/15 21:59:24
VisualStudio2008 Expressバージョンに乗り換えた方が楽だと思いますよ。
もしかしてOSが古いとか?
もしかしてOSが古いとか?
投稿者 brv  (中学生)
投稿日時
2009/10/15 21:24:49
あ… 思いっきりかぶりました。すみません。
投稿者 brv  (中学生)
投稿日時
2009/10/15 21:23:55
>vb2003をつかってますが、BackgroundWorkerが無いのですが…
VB2003ではBackgroundWorkerはありません。確かVB2005以降だったと思います。
Threadを使えば同じようなことができます。
http://www.atmarkit.co.jp/fdotnet/vb2005/vb2005_04/vb2005_04_01.html
↑中にThreadのサンプルも入ってます
VB2003ではBackgroundWorkerはありません。確かVB2005以降だったと思います。
Threadを使えば同じようなことができます。
http://www.atmarkit.co.jp/fdotnet/vb2005/vb2005_04/vb2005_04_01.html
↑中にThreadのサンプルも入ってます
投稿者 ヴァン  (社会人)
投稿日時
2009/10/15 21:20:32
VB2003なのか。
http://www.atmarkit.co.jp/fdotnet/mthread/index/index.html
ここ見てマルチスレッドの勉強してね、としか言えない。
http://www.atmarkit.co.jp/fdotnet/mthread/index/index.html
ここ見てマルチスレッドの勉強してね、としか言えない。
投稿者 ?-?  (その他)
投稿日時
2009/10/15 20:57:46
> vb2003をつかってますが、BackgroundWorkerが無いのですが…
本当は最初に使っているバージョンを書いて欲しいのですが・・・
もちろん、開発環境だけでなく、動作させる環境(OS等)も書くのですよ。
本当は最初に使っているバージョンを書いて欲しいのですが・・・
もちろん、開発環境だけでなく、動作させる環境(OS等)も書くのですよ。
投稿者 ちょうちょ  (学生)
投稿日時
2009/10/15 20:31:57
>ヴァン様
vb2003をつかってますが、BackgroundWorkerが無いのですが…
何か特別なことをする必要があるのでしょうか?
初心者ですいません。
vb2003をつかってますが、BackgroundWorkerが無いのですが…
何か特別なことをする必要があるのでしょうか?
初心者ですいません。
投稿者 ヴァン  (社会人)
投稿日時
2009/10/15 20:12:24
BackgroundWorkerを使った方が良いのでは?
DoWork内で監視処理を行う。
その中で停止すべきかどうか判断する。
DoWork内で監視処理を行う。
その中で停止すべきかどうか判断する。
Public Class Form1
'監視処理の開始
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.BackgroundWorker1.WorkerSupportsCancellation = True
Me.BackgroundWorker1.RunWorkerAsync()
End Sub
'非常停止ボタン
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.BackgroundWorker1.CancelAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
While True
If Me.BackgroundWorker1.CancellationPending = True Then
e.Cancel = True
Exit While
End If
'監視処理など
End While
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If e.Cancelled = True Then
MsgBox("非常停止")
End If
End Sub
End Class
投稿者 ちょうちょ  (学生)
投稿日時
2009/10/15 19:29:15
>うぃ様
詳しいコードを良かったら教えてもらえませんか?
>Knyacky様
このコードでやってみましたが割り込めませんでした。
パソコンから電圧機器に、ある電圧をかけたり0にしたりをvb.netからおくっているのですが、それの緊急停止ボタンを作りたいんです。
このコードを入れてもformがかたまったまま反応してくれませんでした。
詳しいコードを良かったら教えてもらえませんか?
>Knyacky様
このコードでやってみましたが割り込めませんでした。
パソコンから電圧機器に、ある電圧をかけたり0にしたりをvb.netからおくっているのですが、それの緊急停止ボタンを作りたいんです。
このコードを入れてもformがかたまったまま反応してくれませんでした。
投稿者 Knyacky  (中学生)
投稿日時
2009/10/15 01:52:36
ここでは変数aが10になるまでループさせるということにします。
を入れると、ユーザーの割り込みが可能になるはずです。この状態で、終了させるコード
とか
とやるといいはず。
なら
です。
While a <= 10
a += 1
System.Windows.Forms.Application.DoEvents()
End While
を入れると、ユーザーの割り込みが可能になるはずです。この状態で、終了させるコード
End
とか
Close()
とやるといいはず。
なら
While a = 10
a += 1
DoEvents
Wend
です。
投稿者 うぃ  (その他)
投稿日時
2009/10/14 21:38:17
> 投稿者 ちょうちょ (学生) 投稿日時 2009/10/14 12:32:38
>
> プログラムでwhileで繰り返している途中でボタンを押せばそのプログラムを強制的に終了させる方法を教えてもらえませんか?
内部でPEEKMESSAGEを呼び出し、キーが押されたイベントを取得したらbreakするようにしたらいいのではないでしょうか?(C風に考えてみた)
>
> プログラムでwhileで繰り返している途中でボタンを押せばそのプログラムを強制的に終了させる方法を教えてもらえませんか?
内部でPEEKMESSAGEを呼び出し、キーが押されたイベントを取得したらbreakするようにしたらいいのではないでしょうか?(C風に考えてみた)
投稿者 ちょうちょ  (学生)
投稿日時
2009/10/14 21:32:38
プログラムでwhileで繰り返している途中でボタンを押せばそのプログラムを強制的に終了させる方法を教えてもらえませんか?
サイト紹介ありがとうございます
ずっと考えてましたが、なかなか骨の折れる作業ですね…
簡単にいけるかと思ったのですが…もう少しがんばってみます
(ちなみにOSはXP使用です)