概要
C#で作成したdllは非同期処理などを含むことができますので、
「秀丸を閉じる」際などに、「スレッドを止める」あるいは「ファイルに書き込む」など必要な処理を行う必要があるような
dllを作成したいと思うこともあるでしょう。
秀丸エディタ 8.98以上ならば、COM呼び出しに対して、オブジェクト解放時にメソッドを指定して実行させることが出来ます。
public void ***(int reason=0) 型のメソッドを終了時用のメソッドとして定義
reasonには、どういった理由で解放されたのかの番号が渡ってきます。
呼び出し側
「setcomdetachmethod」と「keepobject」で、終了時のメソッドを指定しつつも、プロセスが終了するまでオブジェクトをキープすることとなります。
(※ keepobjectを記述しなかった場合は、マクロ終了時に自動的に、setcomdetachmethod で指定したメソッドが呼ばれます。)
呼び出し側
同じマクロを何度も実行した際、どんどんオブジェクトが蓄積されるのではなく、「(同じプロセスの)1つ前に生成したもの」は「Dispose」したい、といった場合には以下のようにすれば良いでしょう。