Podpora přerušitelné knihovny
Přehled
Aspose.Slides poskytuje přerušitelné zpracování pro dlouho běžící úlohy prezentací, jako je deserializace, serializace a renderování. Tento mechanismus je založen na třídách InterruptionToken a InterruptionTokenSource.
InterruptionToken může být přiřazen k LoadOptions a předán konstruktoru Presentation. Když je voláno InterruptionTokenSource::Interrupt(), související dlouho běžící úloha je přerušena.
Přerušitelná knihovna
V Aspose.Slides 18.4 jsme představili třídy InterruptionToken a InterruptionTokenSource. Umožňují přerušit dlouho běžící úlohy, jako je deserializace, serializace a renderování.
- InterruptionTokenSource je zdrojem tokenu(ů) předávaných do ILoadOptions::set_InterruptionToken.
- Když je ILoadOptions::set_InterruptionToken nastaven a instance LoadOptions je předána konstruktoru Presentation, volání InterruptionTokenSource::Interrupt() přeruší jakoukoli dlouho běžící úlohu spojenou s touto Presentation.
Následující úryvek kódu ukazuje, jak přerušit běžící úlohu:
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()); // spustí akci v samostatném vlákně
Threading::Thread::Sleep(10000); // časový limit
tokenSource->Interrupt(); // zastaví konverzi
}
Často kladené otázky
Jaký je účel přerušitelné knihovny Aspose.Slides?
Poskytuje mechanismus k přerušení dlouho běžících operací — například načítání, ukládání nebo renderování prezentací — před jejich dokončením. To je užitečné, když je nutné omezit dobu zpracování nebo úloha již není potřeba.
Jaký je rozdíl mezi InterruptionToken a InterruptionTokenSource?
InterruptionTokenje předáván API Aspose.Slides a během dlouho běžících operací kontrolován.InterruptionTokenSourcese používá ve vašem kódu k vytváření tokenů a k vyvolání přerušení volánímInterrupt().
Jaké úlohy lze přerušit?
Jakákoli úloha Aspose.Slides, která přijímá InterruptionToken — například načítání prezentace pomocí Presentation(path, loadOptions) nebo ukládání pomocí Presentation::Save(...) — může být přerušena.
Dochází k přerušení okamžitě?
Ne. Přerušení je kooperativní: operace periodicky kontroluje token a zastaví se, jakmile zjistí, že bylo voláno Interrupt().
Co se stane, pokud zavolám Interrupt() po tom, co úloha již byla dokončena?
Nič — volání nemá žádný efekt, pokud byla odpovídající úloha již dokončena.
Mohu znovu použít stejný InterruptionTokenSource pro více úloh?
Ano — ale po volání Interrupt() na tomto zdroji budou všechny úlohy používající jeho tokeny přerušeny. Pro samostatné řízení úloh používejte samostatné zdroje tokenů.