Unterstützung für störbare Bibliothek
Contents
[
Hide
]
Störbare Bibliothek
Die InterruptionToken und InterruptionTokenSource Klassen wurden zu Aspose.Slides für C++ hinzugefügt. Diese Typen unterstützen die Unterbrechung von langlaufenden Aufgaben, wie Deserialisierung, Serialisierung oder Rendering. Die InterruptionTokenSource repräsentiert die Quelle des Tokens oder mehrere Tokens, die an die LoadOptions.set_InterruptionToken() Methode übergeben werden. Wenn das Unterbrechungs-Token gesetzt ist und die LoadOptions Instanz an den Presentation Konstruktor übergeben wird, wird jede langlaufende Aufgabe, die mit dieser Präsentation verbunden ist, unterbrochen, wenn die Methode InterruptionTokenSource.Interrupt() aufgerufen wird.
Der folgende Code-Ausschnitt zeigt, wie eine laufende Aufgabe unterbrochen wird.
void Run(Action<SharedPtr<IInterruptionToken>> action, SharedPtr<IInterruptionToken> token)
{
auto thread_function = std::function<void()>([&action, &token]() -> void
{
action(token);
});
auto thread = System::MakeObject<Threading::Thread>(thread_function);
thread->Start();
}
void Run()
{
String dataDir = GetDataPath();
auto function = std::function<void(SharedPtr<IInterruptionToken> token)> ([&dataDir](SharedPtr<IInterruptionToken> token) -> void
{
SharedPtr<LoadOptions> options = System::MakeObject<LoadOptions>();
options->set_InterruptionToken(token);
SharedPtr<Presentation> presentation = System::MakeObject<Presentation>(dataDir + u"pres.pptx", options);
presentation->Save(dataDir + u"pres.ppt", Export::SaveFormat::Ppt);
});
auto action = System::Action<SharedPtr<IInterruptionToken>>(function);
auto tokenSource = System::MakeObject<InterruptionTokenSource>();
// Aktion in einem separaten Thread ausführen
Run(action, tokenSource->get_Token());
// Timeout
Threading::Thread::Sleep(5000);
// Konvertierung stoppen
tokenSource->Interrupt();
}