錯誤還是功能?對於那些可能知道的人來說,如果您有一個窗口的 <極其用戶以這種方式退出 JMP 很常見,因此幾乎總是繞過所有 <
有沒有人看到過這個/知道任何解決方法?
我遇到的主要問題是,我讓 JMP 啟動事件循環 Python 腳本並將可執行文件附加到窗口,然後通過本地主機套接字與 Python 進行通信。窗口關閉腳本將優雅地終止 Python 會話等。當 JMP 以上述方式關閉時,這種情況不會發生,然後 JMP 會凍結,但 JMP 窗口全部消失 - 因此 JMP 及其全套資源(通常超過 1GB)仍保留在任務管理器列表中,並將只能通過手動結束任務來殺死。
由於 RunProgram 結果必須綁定到活動 JMP 窗口(我想是為了事件循環目的),並且由於窗口以我上面描述的方式強制關閉,因此在我能夠正確關閉之前 RunProgram 變量就被銷毀了Python。
這是一團糟,我希望有一個解決方案,但到目前為止我還沒有看到它。
自動化和腳本編寫視窗回复:錯誤還是功能?我在 FileSnapper 插件中使用它來處理類似的問題。 RunProgram 實際上並不綁定到窗口,而是綁定到可以克隆的窗口上下文。 只要克隆或窗口引用上下文,它就不會被破壞,並且 RunProgram 腳本仍然可以工作。 命名空間:evalcontext 變量從未被使用過,除非是為了保持上下文活動。 RunProgram 變量/句柄(可能是 rp)也保存在同一名稱空間中,因為它需要相同的生命週期。
// addinLoad.jsl - this is the round-about launcher that uses a clone of a transient
// window's evalcontextbox to keep the evalcontext for a callback script alive.
// ideally, this would be, or directly include, FileSnapper.jsl, but that file
// constructs a RunProgram callback script that is somehow tied to a transient
// evalcontext that won't be available at callback time.
Local( {bb},
New Window( "File Snapper Startup", bb = Button Box( "start", Include( "$ADDIN_HOME(com.jmp.hales.FileSnapper)\Additional.jsl" ) ) );
bb << click; // run the script in this window's context
// capture the evalcontext, by cloning the box that references it into our namespace
Namespace( "FileSnapper" ):evalcontext = ((bb << parent) << parent) << clonebox;
bb << closewindow;
if(Namespace( "FileSnapper" ):evalcontext<<CLASSNAME></CLASSNAME>
這些都沒有記錄在案,也沒有承諾在未來發揮作用,但如果發生變化,它可能會發出有用的信息。
@jschroedl - ^Q 和 OnClose 腳本
回复:錯誤還是功能?這次真是萬分感謝!我現在就看一下它是否有效,但你永遠不會放棄這些美妙的寶石,所以我相信它會對我有用!這對於繞過窗口問題來說非常棒!
回复:錯誤還是功能?@肯尼思亞當斯不客氣! 文件快照程序(文件快照程序),或者獲取上下文的技術? 這兩種反饋對於 JMP 開發團隊都有好處。
@朱利安- Filesnapper 可能有助於恢復我正在處理的JSL,並且上下文捕獲器在編寫在啟動期間(也可能在其他地方)啟動的加載項時非常有用。如果更多地集成到JMP 中,這兩個想法可能會更好。
回复:錯誤還是功能?感謝您的提醒@Craige_Hales
我已經提交了一個問題來調查 ^Q + OnClose 行為,看看我們將來是否可以改進。
回复:錯誤還是功能?請注意,我僅在 ^Q 導致以下彈出窗口(多個未保存的文件)並且用戶單擊“不保存”時才看到該問題

回复:錯誤還是功能?我剛剛使用您的技巧實現了持久的Python 連接以擺脫窗口- 現在我可以將Python 會話終止腳本放入AddinUnload.jsl 文件中並且它可以工作(JMP 不會在沒有打開窗口的情況下凍結,留下一個只能通過任務管理器殺死的隱藏會話)
非常感謝你的幫助!借助新的持久 Python 連接,我可以將所有數據查詢卸載到 Python 並並行運行它們,然後 JMP 將在準備好供用戶使用時拾取文件,這太棒了!
回覆:錯誤還是功能?謝謝,你拯救了我的一天。如果您在用戶使用“不保存”選項關閉多個編輯的文件時遇到問題。如果有人在論文寫作方面需要幫助並且正在尋找最好的在線論文作者,他們應該訪問這https://writinguniverse.com/essay-types/informative-essays/頁。 該網站允許他們比較不同的網站及其評論,以便為他們的論文專案做出明智的選擇。 簡而言之,該網站透過為他們的論文專案提供評論和選項來幫助人們找到合適的線上論文寫作服務。
回覆:錯誤還是功能?@jschroedl有更新嗎?我還注意到當用戶從窗口列表中選擇多個窗口並立即關閉它們時(通常在選擇它們後按刪除鍵),並且如果有一個關於多個未保存文件的彈出窗口,則“保存無”將關閉,而不會出現相同的問題觸發 OnClose——與上面完全相同,只是它們不會退出 JMP。
由於清理腳本永遠不會運行,這可能會使許多資源懸而未決。