あるメーカーのボードを使用して、プログラムを組んでいます。
ソースのMainで、ボードと接続してオブジェクト使用するのですが、
その、オブジェクトを開放しないと、VBがフリーズしてしまいます。
実行したソースプログラムを、終了ボタンで終わりにする。
この時に、オブジェクトを開放している。
その終了方法だと VBに戻る
しかし、ステップ実行やなどで、プログラムが止まっている時に
■ボタンの終了押すとVBが止まってしまう。
VBを強制終了しなければならない。
■ボタンの終了でも、オブジェクトを開放する方法はあるのでしょうか?
(案1) 標準モジュールなどに、Forms コレクションを列挙して
ロード済みの全フォームを Unload するためのデバッグ用プロシージャを
用意しておき、■を押す代わりに、イミディエイト ペインなどから
そのプロシージャを呼び出すようにする。
http://www.microsoft.com/japan/msdn/vs_previous/vbasic/faq/programfaq.htm
》Q. [VB5][VB4]全てのフォームを、確実にアンロードする方法を教えてください。
(案2) ボードと接続する部分を、ActiveX コントロールとして ocx 化し、
UserControl_Terminate の中でオブジェクの終了処理を行うようにする。
(これを貼り付けたフォームがどのように閉じられても、終了処理が発生)
Option Explicit
Private designMode As Boolean
Private Sub UserControl_InitProperties()
designMode = Ambient.UserMode
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
designMode = Ambient.UserMode
End Sub
Private Sub UserControl_Terminate()
If designMode Then
MsgBox "解放処理をここに記述"
End If
End Sub