[リストへもどる]
一括表示

タイトルPPx.Entry.AllMarkとPPx.StayModeについて
記事No4585
投稿日: 2024/08/03(Sat) 12:46
投稿者tm
1. PPx.Entry.AllEntry/AllMarkにはReset()メソッドが用意されて
いますが、AllMarkに対してReset()を実行したときにおかしな挙動
になります。

以下のようなコードを実行したときにentry.Nameは"."を返します。
また無限ループのような状態になっているのか動作不能に陥ります。

//!*script
const entry = PPx.Entry.AllMark;
/** 実際にはここで一度ループ処理 */
entry.Reset();
PPx.Echo(entry.Name);
for (;!entry.atEnd();entry.moveNext()) {
/** ここは実行されない */
}

windows10 64bit chakra.dllで確認しました。

2. 一行編集上で使用したStayModeインスタンスの破棄はどのような
方法が望ましいでしょうか?
いまはワンショットのKC_main:ACTIVEEVENTで処理していますが、
エラーなどで、インスタンスが破棄されたときにACTIVEEVENTが
ループして困ることがありました。
ACTIVEEVENTを使わない方法があるならよいのですが。

具体的には以下のような状況です。
(1) 何らかの継続処理の非同期スクリプトA実行中
(2) 一行編集を起動。スクリプトBのStayModeインスタンス常駐
インスタンス破棄用ACTIVEEVENTを設定
このタイミングでスクリプトAのエラーが発生し、PPcが落ちる
(3) PPc再起動。ACTIVEEVENTがループ


誤字報告です。
PPXSCR.TXT "常駐時の挙動について"内
StayMode が StarMode になっています。

追記
簡単な誤字報告などはgithubにPRを出したほうがよいでしょうか?


タイトルRe: PPx.Entry.AllMarkとPPx.StayModeについて
記事No4586
投稿日: 2024/08/03(Sat) 23:44
投稿者TORO
1. Reset() については修正で対応します。

2. 一行編集上で常駐したときは、一行編集が生きている間に
 常駐解除できない場合、スレッドが終了したときの自動廃棄処理に
 頼ることを想定しています。
 この辺の扱いはもう一度検討しようと思います。

誤字については了解です。github についてはあまり活用していな
いので、反応が鈍いかもしれません。


タイトルRe^2: PPx.Entry.AllMarkとPPx.StayModeについて
記事No4589
投稿日: 2024/08/04(Sun) 10:11
投稿者tm
> 2. 一行編集上で常駐したときは、一行編集が生きている間に
>  常駐解除できない場合、スレッドが終了したときの自動廃棄処理に
>  頼ることを想定しています。
>  この辺の扱いはもう一度検討しようと思います。

自動廃棄処理というのがわからないので調べてみます。

> 誤字については了解です。github についてはあまり活用していな
> いので、反応が鈍いかもしれません。

また誤字を見つけたときにはPRするかもしれません。
こちらも慣れていないので不手際があるかもしれませんが
よろしくお願いします。


タイトルRe^3: PPx.Entry.AllMarkとPPx.StayModeについて
記事No4590
投稿日: 2024/08/04(Sun) 22:23
投稿者TORO
自動廃棄処理は、単に Script Module がスレッド終了時に
ppx_finally メソッドを実行した後、インスタンスを
終了させることを言っています。


タイトルRe^4: PPx.Entry.AllMarkとPPx.StayModeについて
記事No4591
投稿日: 2024/08/04(Sun) 23:19
投稿者tm
> 自動廃棄処理は、単に Script Module がスレッド終了時に
> ppx_finally メソッドを実行した後、インスタンスを
> 終了させることを言っています。
>

わかりました。ppx_finally()は触れていないので色々試してみます。