- PR -

強制終了するには

投稿者投稿内容
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-08-31 18:59
 いつもありがとうございます。

VB2005でデータベース更新時に
異常終了した場合、強制終了させたいのですが
下記のように書いても終了しません。

Try

Catch ex As Exception
MessageBox.Show(ex.Message)
Me.Close()
End Try

6.0の時は Unload Meで終了したと思うのですが。

何か方法はありますか?

YAS
ベテラン
会議室デビュー日: 2006/02/15
投稿数: 59
投稿日時: 2007-08-31 19:23
Application.Exit() とか
End とか
どうでしょう。

特に,Endで終了できなければ,他に方法はないと思います。

でも,Me.Close()で閉じない理由を探った方がよいかと思います。
Me.Close()が無視されるのですか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-08-31 21:03
引用:

LANVINさんの書き込み (2007-08-31 18:59) より:

6.0の時は Unload Meで終了したと思うのですが。


この Unload Me は MainForm での Me.Close に相当するのですが。 そもそも Unload Me は強制終了ではありません。

VB6 では End ステートメントが強制終了です。 そしてこれは .NET では System.Windows.Forms.Application.Exit メソッドではなく System.Environment.Exit メソッドに相当します。

YAS さんが書かれていることの繰り返しになりますが、このようなメソッドを利用する必要はなく、MainForm が Close メソッドされれば Windows アプリケーションは終了します。 終了しなければなりません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-08-31 22:49
YASさん、じゃんぬねっとさん
ありがとうございます。

今は
Application.Exit() End の検証ができませんので
明日検証します。

ボタンクリック後
Try
 データベース更新実行
Catch ex As Exception
MessageBox.Show(ex.Message)
Me.Close()
End Try

続く処理があります。

とコーディングしてありますが
Me.Close()としても
その後の
続く処理を実行してしまうのです。

MessageBox.Show(ex.Message) でエラーを表示させ
okボタンを押すことでFormを閉じようと思ったのですが・・

よくよく考えると閉じてしまうのもおかしいですよね。

MessageBox.Show(ex.Message) でエラーを表示させ
okボタンを押すとExit Subの方が普通でしょうか?
****************************
ボタンクリックイベント

Try
 データベース更新実行
Catch ex As Exception
MessageBox.Show(ex.Message)
Exit Sub
End Try

続く処理

End Sub

*************************

すいません、初めてのことで・・





YAS
ベテラン
会議室デビュー日: 2006/02/15
投稿数: 59
投稿日時: 2007-09-01 00:51
処理を中断してFormを閉じるのなら,
コード:
Me.Close()
Exit Sub


としないと,Me.Close()の続きは処理が続いてしまします。
FormをClose()してもその瞬間にFormがなくなってしまう訳ではありません。
Close()した後も実行中の処理は続きますし,プロパティなどにもアクセス可能なものがあります。そのあたりは普通のクラスと違って内部的にいろいろあるようです。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=31893&forum=7&start=0
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-01 09:07
強制終了反対

リソースがリークする
終了処理にまわして、行儀よく終わってください。
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-09-01 14:03
Jittaさん
YASさん
じゃんぬねっとさん

 ありがとうございます。

 少し横道にそれるかもしれませんが

 呼び出し元プログラムからSQL文を渡して
 DataViewを返すDLLがあります。

 少し省略してありますが
DLLのコードは

 Public Function DATA(ByVal pSQL As String) As DataView
Try
DA.Fill(DS)
Return DS.Tables(0).DefaultView
Catch ex As Exception

Finally
Cn.Close()
End Try

End Function

 です。 Catch ex As Exceptionで
 エラーをも呼び出し元に返したいのですが
 (呼び出し元でエラーをメッセージボックスで表示させたい為)

 可能でしょうか?


  
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-01 19:22
引用:

LANVINさんの書き込み (2007-09-01 14:03) より:

少し横道にそれるかもしれませんが


件名とは関係ありませんし、横道にしてもこれまでの経緯からして一答で終わるとは思えません。 また、本題の方の回答を無視して進めるべきものだとも思えません。 別スレッドを立ててそちらで話を展開してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)