我目前正在開發嵌入 JCEF 以進行前端互動的 IDEA 擴展。一旦用戶點擊了一個按鈕,實作的onQuery方法MessageRouterHandler就會被執行,并且會執行一個耗時的任務。
耗時的任務在一個方法中實作(在主執行緒以外的執行緒上異步,以防 UI 被凍結)并以類似的形式包裝
private void task(CefBrowser browser, CefQueryCallback callback) {
ApplicationManager.getApplication().executeOnPooledThread(() -> {
...DETAILED IMPLEMENTATION FOR THE TASK...
});
}
runnable只包含檔案讀取相關的操作(由用戶在JCEF webview上點擊另一個按鈕選擇),與IDE界面無關,所以我沒有添加runWriteAction或runReadAction這里。
由于任務可能需要更長的時間,我想為用戶的取消訂單添加一個按鈕。但是,我對擴展開發很陌生,誰能幫我弄清楚如何實作取消功能?非常感謝您的任何建議。
uj5u.com熱心網友回復:
耗時的任務應在進度指示器下執行,請參閱com.intellij.openapi.progress.ProgressManager。在任務期間,您可以呼叫com.intellij.openapi.progress.ProgressManager#checkCanceled以查看任務是否已被用戶取消。此呼叫應該很便宜,因此您可以經常呼叫它以確保您的流程能夠迅速回應用戶的取消請求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/344004.html
