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