Ondersteuning voor onderbreekbare bibliotheek
Overzicht
Aspose.Slides biedt een onderbreekbare verwerkingsmechanisme voor langdurige presentatietaken, zoals deserialisatie, serialisatie en rendering. Dit mechanisme is gebaseerd op de klassen InterruptionToken en InterruptionTokenSource.
InterruptionToken kan worden toegewezen aan LoadOptions en doorgegeven aan de constructor van Presentation. Wanneer InterruptionTokenSource::Interrupt() wordt aangeroepen, wordt de bijbehorende langdurige taak onderbroken.
Onderbreekbare bibliotheek
In Aspose.Slides 18.4, hebben we de klassen InterruptionToken en InterruptionTokenSource geïntroduceerd. Ze stellen u in staat om langdurige taken zoals deserialisatie, serialisatie en rendering te onderbreken.
- InterruptionTokenSource is de bron van het token of de tokens die worden doorgegeven aan ILoadOptions::set_InterruptionToken.
- Wanneer ILoadOptions::set_InterruptionToken is ingesteld en de LoadOptions‑instantie wordt doorgegeven aan de Presentation‑constructor, onderbreekt het aanroepen van InterruptionTokenSource::Interrupt() elke langdurige taak die aan die Presentation is gekoppeld.
De volgende code‑fragment toont hoe een draaiende taak kan worden onderbroken:
void Run(Action<SharedPtr<IInterruptionToken>> action, SharedPtr<IInterruptionToken> token)
{
auto threadFunction = std::function<void()>([&action, &token]() -> void
{
action(token);
});
auto thread = System::MakeObject<Threading::Thread>(threadFunction);
thread->Start();
}
void Run()
{
String dataDir = GetDataPath();
auto function = std::function<void(SharedPtr<IInterruptionToken> token)> ([&dataDir](SharedPtr<IInterruptionToken> token) -> void
{
auto options = System::MakeObject<LoadOptions>();
options->set_InterruptionToken(token);
auto presentation = System::MakeObject<Presentation>(dataDir + u"sample.pptx", options);
presentation->Save(dataDir + u"sample.ppt", Export::SaveFormat::Ppt);
});
auto action = System::Action<SharedPtr<IInterruptionToken>>(function);
auto tokenSource = System::MakeObject<InterruptionTokenSource>();
Run(action, tokenSource->get_Token()); // voer de actie uit in een aparte thread
Threading::Thread::Sleep(10000); // time‑out
tokenSource->Interrupt(); // stop de conversie
}
FAQ
Wat is het doel van de Aspose.Slides-interruptiebibliotheek?
Het biedt een mechanisme om langdurige bewerkingen—zoals het laden, opslaan of renderen van presentaties—onder te breken voordat ze voltooid zijn. Dit is nuttig wanneer de verwerkingstijd beperkt moet worden of de taak niet meer nodig is.
Wat is het verschil tussen InterruptionToken en InterruptionTokenSource?
InterruptionTokenwordt doorgegeven aan de Aspose.Slides‑API en gecontroleerd tijdens langdurige bewerkingen.InterruptionTokenSourcewordt in uw code gebruikt om tokens te maken en onderbrekingen te activeren doorInterrupt()aan te roepen.
Welke taken kunnen worden onderbroken?
Elke Aspose.Slides‑taak die een InterruptionToken accepteert—bijvoorbeeld het laden van een presentatie met Presentation(path, loadOptions) of het opslaan met Presentation::Save(...)—kan worden onderbroken.
Gebeuren onderbrekingen onmiddellijk?
Nee. Onderbreking is coöperatief: de bewerking controleert periodiek het token en stopt zodra wordt gedetecteerd dat Interrupt() is aangeroepen.
Wat gebeurt er als ik Interrupt() aanroep nadat een taak al voltooid is?
Geen effect—de aanroep heeft geen invloed als de betreffende taak al voltooid is.
Kan ik dezelfde InterruptionTokenSource opnieuw gebruiken voor meerdere taken?
Ja—maar nadat u Interrupt() op die bron hebt aangeroepen, worden alle taken die haar tokens gebruiken onderbroken. Gebruik aparte token‑bronnen om taken onafhankelijk te beheren.