Unterstützung für Interruptable-Bibliothek

Interruptable Bibliothek

In Aspose.Slides 18.4, haben wir die Klassen InterruptionToken und InterruptionTokenSource eingeführt. Sie ermöglichen das Unterbrechen von langlaufenden Aufgaben wie Deserialisierung, Serialisierung und Rendering.

Der folgende Code‑Abschnitt demonstriert das Unterbrechen einer laufenden Aufgabe:

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();          // die Aktion in einem separaten Thread ausführen
Thread.sleep(10000);     // Zeitüberschreitung
tokenSource.interrupt(); // die Konvertierung stoppen

FAQ

Was ist der Zweck der Aspose.Slides Interrupt‑Bibliothek?

Sie bietet einen Mechanismus, um langlaufende Vorgänge – wie das Laden, Speichern oder Rendern von Präsentationen – vor deren Abschluss zu unterbrechen. Dies ist nützlich, wenn die Verarbeitungszeit begrenzt werden muss oder der Vorgang nicht mehr benötigt wird.

Was ist der Unterschied zwischen InterruptionToken und InterruptionTokenSource?

  • InterruptionToken wird an die Aspose.Slides‑API übergeben und während langlaufender Vorgänge geprüft.
  • InterruptionTokenSource wird in Ihrem Code verwendet, um Token zu erstellen und Unterbrechungen auszulösen, indem Interrupt() aufgerufen wird.

Welche Aufgaben können unterbrochen werden?

Jede Aspose.Slides‑Aufgabe, die ein InterruptionToken akzeptiert – beispielsweise das Laden einer Präsentation mit Presentation(path, loadOptions) oder das Speichern mit Presentation.save(...) – kann unterbrochen werden.

Findet die Unterbrechung sofort statt?

Nein. Die Unterbrechung ist kooperativ: Der Vorgang prüft periodisch das Token und stoppt, sobald er feststellt, dass Interrupt() aufgerufen wurde.

Was passiert, wenn ich Interrupt() aufrufe, nachdem ein Vorgang bereits abgeschlossen ist?

Nichts – der Aufruf hat keine Wirkung, wenn der entsprechende Vorgang bereits abgeschlossen ist.

Kann ich dieselbe InterruptionTokenSource für mehrere Aufgaben wiederverwenden?

Ja – jedoch werden nach dem Aufruf von Interrupt() auf dieser Quelle alle Aufgaben, die deren Token verwenden, unterbrochen. Verwenden Sie separate Token‑Quellen, um Aufgaben unabhängig zu verwalten.