UnLoadイベントを、強制終了時も行ないたい。


さとう  2009-02-10 18:36:07  No: 101570

あるメーカーのボードを使用して、プログラムを組んでいます。

ソースのMainで、ボードと接続してオブジェクト使用するのですが、

その、オブジェクトを開放しないと、VBがフリーズしてしまいます。

実行したソースプログラムを、終了ボタンで終わりにする。
この時に、オブジェクトを開放している。  
その終了方法だと  VBに戻る

しかし、ステップ実行やなどで、プログラムが止まっている時に
■ボタンの終了押すとVBが止まってしまう。
VBを強制終了しなければならない。

■ボタンの終了でも、オブジェクトを開放する方法はあるのでしょうか?


魔界の仮面弁士  2009-02-10 20:32:02  No: 101571

(案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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加