Támogatás a megszakítható könyvtárhoz
Áttekintés
Aspose.Slides egy megszakítható feldolgozási mechanizmust biztosít hosszú ideig futó prezentációs feladatokhoz, például deszerializáláshoz, szerializáláshoz és rendereléshez. Ez a mechanizmus az InterruptionToken és InterruptionTokenSource osztályokon alapul.
Egy InterruptionToken hozzárendelhető a LoadOptions-hoz, és átadható a Presentation konstruktorának. Amikor a InterruptionTokenSource::Interrupt() hívódik, a kapcsolódó hosszú ideig futó feladat megszakad.
Megszakítható könyvtár
Az Aspose.Slides 18.4 bevezetésével megjelentek az InterruptionToken és InterruptionTokenSource osztályok. Ezek lehetővé teszik a hosszú ideig futó feladatok, például a deszerializálás, szerializálás és renderelés megszakítását.
- InterruptionTokenSource a token(ek) forrása, amely a ILoadOptions::set_InterruptionToken‑hez kerül átadásra.
- Amikor a ILoadOptions::set_InterruptionToken be van állítva, és a LoadOptions példány át van adva a Presentation konstruktorának, a InterruptionTokenSource::Interrupt() hívása megszakítja az ehhez a Presentation kapcsolódó bármely hosszú ideig futó feladatot.
A következő kódrészlet bemutatja egy futó feladat megszakítását:
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()); // a művelet futtatása külön szálban
Threading::Thread::Sleep(10000); // időtúllépés
tokenSource->Interrupt(); // a konverzió leállítása
}
GYIK
Mi a célja az Aspose.Slides megszakító könyvtárának?
Egy mechanizmust biztosít a hosszú ideig futó műveletek—például a prezentációk betöltése, mentése vagy renderelése—megszakítására, még mielőtt befejeződnének. Ez akkor hasznos, ha a feldolgozási időt korlátozni kell, vagy a feladat már nem szükséges.
Mi a különbség a InterruptionToken és a InterruptionTokenSource között?
InterruptionTokenátadásra kerül az Aspose.Slides API-nak, és a hosszú ideig futó műveletek során ellenőrzésre kerül.InterruptionTokenSourcea kódban használható tokenek létrehozására és a megszakítások előidézésére aInterrupt()hívásával.
Milyen feladatok szakíthatók meg?
Bármely Aspose.Slides feladat, amely elfogad egy InterruptionToken—például egy prezentáció betöltése a Presentation(path, loadOptions) vagy mentése a Presentation::Save(...)—megszakítható.
A megszakítás azonnal megtörténik?
Nem. A megszakítás együttműködő: a művelet időközönként ellenőrzi a tokent, és leáll, amint észleli, hogy a Interrupt() meghívásra került.
Mi történik, ha a Interrupt() hívást egy már befejezett feladat után hívom meg?
Semmi — a hívásnak nincs hatása, ha a megfelelő feladat már befejeződött.
Újra felhasználhatom ugyanazt a InterruptionTokenSource több feladathoz?
Igen — de miután meghívja a Interrupt() ezen a forráson, az összes tokenjét használó feladat megszakad. Használjon külön tokenforrásokat a feladatok független kezeléséhez.