[ 新規に投稿する ]

jsmodeのスコープのライフサイクルと同じような keepdllやkeeNo.11582
こみやんま さん 24/03/10 15:39 [ コメントを投稿する ]
  弱提案といった感じですが、あった方がいいんでないの、というところで


jsmodeのスコープのライフサイクルと同じような keepdllやkeepobjのモード

jsmodeの完全に厳密なところはあまり把握していないのですが、
概ね、jsmodeの実行スコープ(スクリプト空間というか)は「プロセス」ではなく、
「プロセスかつファイル名」を基準にぶら下げられているかと思うんですが、
これと同じようなスコープライフのモードを keepdll や keepobj にも用意してはどうかといった提案です。

現在 keepobj や keepdll で プロセス空間に相当するモードで一番プログラムを組みにくくなりやすい点が、
『秀丸が「タブモードの時」、1つしかファイルを開いている状態から、そのファイルを閉じて無題になったとしても、「同一プロセス」であるため、ライフサイクルが維持されてしまう』
といった点にあるので、
jsmodeと概ね同一の解放条件のモードを作成してはどうかというものです。

//----------------------------------------------------------------------
例:
#dll = loaddll(...)
keepdll #dll, 4; // 番号は新たなモード (解放されるタイミングはjsmodeと同じような感じの条件)
setdlldetachfunc(...); // あってもなくても

// ファイルが閉じられたり新たなファイルが同一プロセスで開かれたら、dll解放。 (jsmodeの解放と概ね条件を合わせる)
// この時、解放直前にsetdlldetachfuncの関数や、DllDetachFunc_After_Hm866 をreason引数付で呼ぶ
//----------------------------------------------------------------------


//----------------------------------------------------------------------
例:
#obj = createobject(...)
keepobject #obj, 4; // 番号は新たなモード (解放されるタイミングはjsmodeと同じような感じの条件)
setcomdetachmethod #obj, "OnReleaseObject";

// ファイルが閉じられたり新たなファイルが同一プロセスで開かれたら、obj解放 (jsmodeの解放と概ね条件を合わせる)
// この時、解放直前にsetcomdetachmethodで指定した関数をreason引数付で呼ぶ
//----------------------------------------------------------------------


といった感じの提案です。
[ ]
RE:11582 jsmodeのスコープのライフサイクルと同じような keepdNo.11585
秀丸担当 さん 24/03/11 16:41 [ コメントを投稿する ]
  ご提案ありがとうございます。
keepdllやkeepobjectに、jsmodeと同じようなタイミングがあったらいいです。
試しにやってみようとしたらいろいろ内部的に複雑なところもあるのですが、できたほうがいいと思います。
今後検討しようと思います。
[ ]

[ 新規に投稿する ]