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.

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?

  • InterruptionToken wordt doorgegeven aan de Aspose.Slides‑API en gecontroleerd tijdens langdurige bewerkingen.
  • InterruptionTokenSource wordt in uw code gebruikt om tokens te maken en onderbrekingen te activeren door Interrupt() 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.