Wsparcie dla biblioteki przerwalnej
Przegląd
Aspose.Slides udostępnia mechanizm przetwarzania z możliwością przerwania dla długotrwałych zadań związanych z prezentacjami, takich jak deserializacja, serializacja i renderowanie. Mechanizm ten opiera się na klasach InterruptionToken i InterruptionTokenSource.
InterruptionToken może być przypisany do LoadOptions i przekazany do konstruktora Presentation. Gdy wywołana zostanie metoda InterruptionTokenSource.interrupt(), powiązane długotrwałe zadanie zostaje przerwane.
Biblioteka z możliwością przerwania
W wersji Aspose.Slides 18.4 wprowadziliśmy klasy InterruptionToken i InterruptionTokenSource. Umożliwiają one przerywanie długotrwałych zadań, takich jak deserializacja, serializacja i renderowanie.
- InterruptionTokenSource jest źródłem tokenu(ów) przekazywanych do ILoadOptions.setInterruptionToken.
- Gdy metoda ILoadOptions.setInterruptionToken zostanie ustawiona i instancja LoadOptions zostanie przekazana do konstruktora Presentation, wywołanie InterruptionTokenSource.Interrupt() przerywa każde długotrwałe zadanie powiązane z tą Presentation.
Poniższy fragment kodu demonstruje przerywanie uruchomionego zadania:
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(); // uruchom akcję w osobnym wątku
Thread.sleep(10000); // limit czasu
tokenSource.interrupt(); // zatrzymaj konwersję
FAQ
Jaki jest cel biblioteki przerwań Aspose.Slides?
Zapewnia mechanizm pozwalający przerwać długotrwałe operacje — takie jak wczytywanie, zapisywanie lub renderowanie prezentacji — przed ich zakończeniem. Jest to przydatne, gdy czas przetwarzania musi być ograniczony lub zadanie nie jest już potrzebne.
Jaka jest różnica między InterruptionToken a InterruptionTokenSource?
InterruptionTokenjest przekazywany do API Aspose.Slides i sprawdzany podczas długotrwałych operacji.InterruptionTokenSourcejest używany w kodzie do tworzenia tokenów i wyzwalania przerwań poprzez wywołanieInterrupt().
Jakie zadania można przerwać?
Każde zadanie Aspose.Slides, które akceptuje InterruptionToken — na przykład wczytywanie prezentacji przy użyciu Presentation(path, loadOptions) lub zapisywanie przy pomocy Presentation.save(...) — może zostać przerwane.
Czy przerwanie następuje natychmiast?
Nie. Przerwanie jest współpracujące: operacja okresowo sprawdza token i zatrzymuje się, gdy tylko wykryje, że wywołano Interrupt().
Co się stanie, jeśli wywołam Interrupt() po zakończeniu zadania?
Nic — wywołanie nie ma żadnego efektu, jeśli odpowiednie zadanie już się zakończyło.
Czy mogę ponownie używać tego samego InterruptionTokenSource dla wielu zadań?
Tak — ale po wywołaniu Interrupt() na tym źródle, wszystkie zadania korzystające z jego tokenów zostaną przerwane. Używaj oddzielnych źródeł tokenów, aby zarządzać zadaniami niezależnie.