可中斷函式庫支援
概觀
Aspose.Slides 提供可中斷的處理機制,用於長時間執行的簡報任務,例如反序列化、序列化和算繪。此機制基於 InterruptionToken 與 InterruptionTokenSource 類別。
InterruptionToken 可指派給 LoadOptions,並傳遞至 Presentation 建構式。當呼叫 InterruptionTokenSource.interrupt() 時,相關的長時間任務將被中斷。
可中斷函式庫
在 Aspose.Slides 18.4 中,我們引入了 InterruptionToken 與 InterruptionTokenSource 類別。它們允許您中斷長時間執行的任務,例如反序列化、序列化和算繪。
- InterruptionTokenSource 是傳遞給 ILoadOptions.setInterruptionToken 的 token(或 tokens)的來源。
- 當設定了 ILoadOptions.setInterruptionToken 且將 LoadOptions 實例傳遞給 Presentation 建構式時,呼叫 InterruptionTokenSource.Interrupt() 會中斷與該 Presentation 相關的任何長時間任務。
下列程式碼片段示範了如何中斷執行中的任務:
final InterruptionTokenSource tokenSource = new InterruptionTokenSource();
Runnable interruption = new Runnable() {
public void run() {
LoadOptions loadOptions = new LoadOptions();
loadOptions.setInterruptionToken(tokenSource.getToken());
Presentation presentation = new Presentation("sample.pptx", loadOptions);
try{
presentation.save("sample.ppt", SaveFormat.Ppt);
}
finally {
presentation.dispose();
}
}
};
Thread thread = new Thread(interruption);
thread.start(); // 在單獨的執行緒中執行動作
Thread.sleep(10000); // 逾時
tokenSource.interrupt(); // 停止轉換
常見問題
Aspose.Slides 中斷函式庫的目的為何?
它提供了一種機制,可在長時間操作(例如載入、儲存或算繪簡報)完成之前中斷它們。當必須限制處理時間或任務已不再需要時,此功能相當有用。
InterruptionToken 與 InterruptionTokenSource 有何不同?
InterruptionToken會傳遞給 Aspose.Slides API,並在長時間操作期間被檢查。InterruptionTokenSource用於您的程式碼中以建立 token,並透過呼叫Interrupt()觸發中斷。
哪些任務可以被中斷?
任何接受 InterruptionToken 的 Aspose.Slides 任務——例如使用 Presentation(path, loadOptions) 載入簡報或使用 Presentation.save(...) 儲存——都可以被中斷。
中斷會立即發生嗎?
不會。中斷是合作式的:操作會定期檢查 token,並在偵測到已呼叫 Interrupt() 時立即停止。
如果在任務已完成後呼叫 Interrupt() 會發生什麼情況?
不會有任何作用——如果相對的任務已完成,呼叫將不會產生影響。
我可以在多個任務中重複使用相同的 InterruptionTokenSource 嗎?
可以——但在對該來源呼叫 Interrupt() 後,所有使用其 token 的任務都會被中斷。請使用不同的 token 來源以獨立管理任務。