2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« DDEは多重処理に耐えません。 | トップページ | コマンドラインで壁紙を変更する。 »

2007年1月20日 (土)

エラー時の資源解放

一般のオブジェクトは参照の解放で終了するのでよいのですが、
中には参照の解放では終了しないものがあります。
そういうものはエラー時に終了指示ルートを通らないと、残ります。
エラーリカバリで頑張る方法もありますが、
Classにラップして、参照の解放で終了するようにできます。

原理を理解するために以下のクラスを作って、

Class Class1
Sub Class_Terminate()
MsgBox "資源解放"
End Sub
End Class

Set oClass1=New Class1
'処理をここに記述。↓正常/異常終了のシミュレート。
If MsgBox("Yes:正常終了 No:異常終了",vbYesNo)=vbNo Then Err.Raise 100

を実行すると、正常/異常終了のどちらの場合も、正常/異常終了後に
MsgBox "資源解放"
が実行されます。

なので、ここで資源を確実に解放するようにしておけばよいのです。
エラーリカバリを頑張るより簡単です。

« DDEは多重処理に耐えません。 | トップページ | コマンドラインで壁紙を変更する。 »