Supporto per la libreria interruttibile
Panoramica
Aspose.Slides fornisce un meccanismo di elaborazione interrompibile per operazioni di presentazione a lunga durata, come deserializzazione, serializzazione e rendering. Questo meccanismo si basa sulle classi InterruptionToken e InterruptionTokenSource.
Un InterruptionToken può essere assegnato a LoadOptions e passato al costruttore Presentation. Quando viene chiamato InterruptionTokenSource.interrupt(), l’operazione a lunga durata associata viene interrotta.
Libreria interruttibile
In Aspose.Slides 18.4, abbiamo introdotto le classi InterruptionToken e InterruptionTokenSource. Esse consentono di interrompere operazioni a lunga durata come deserializzazione, serializzazione e rendering.
- InterruptionTokenSource è la sorgente del token(i) passato a ILoadOptions.setInterruptionToken.
- Quando ILoadOptions.setInterruptionToken è impostato e l’istanza LoadOptions viene passata al costruttore Presentation, l’invocazione di InterruptionTokenSource.Interrupt() interrompe qualsiasi operazione a lunga durata associata a quella Presentation.
Il seguente frammento di codice dimostra l’interruzione di un’operazione in corso:
final InterruptionTokenSource tokenSource = new InterruptionTokenSource();
Runnable interruption = new Runnable() {
public void run() {
LoadOptions loadOptions = new LoadOptions();
loadOptions.setInterruptionToken(tokenSource.getToken());
Presentation presentation = new Presentation("sample.pptx", loadOptions);
try{
presentation.save("sample.ppt", SaveFormat.Ppt);
}
finally {
presentation.dispose();
}
}
};
Thread thread = new Thread(interruption);
thread.start(); // esegui l'azione in un thread separato
Thread.sleep(10000); // tempo di attesa
tokenSource.interrupt(); // interrompi la conversione
FAQ
Qual è lo scopo della libreria di interruzione di Aspose.Slides?
Fornisce un meccanismo per interrompere operazioni a lunga durata—come il caricamento, il salvataggio o il rendering di presentazioni—prima che terminino. È utile quando il tempo di elaborazione deve essere limitato o l’operazione non è più necessaria.
Qual è la differenza tra InterruptionToken e InterruptionTokenSource?
InterruptionTokenviene passato all’API Aspose.Slides e verificato durante le operazioni a lunga durata.InterruptionTokenSourceviene utilizzato nel tuo codice per creare token e attivare interruzioni chiamandoInterrupt().
Quali attività possono essere interrotte?
Qualsiasi attività Aspose.Slides che accetta un InterruptionToken—come il caricamento di una presentazione con Presentation(path, loadOptions) o il salvataggio con Presentation.save(...)—può essere interrotta.
L’interruzione avviene immediatamente?
No. L’interruzione è cooperativa: l’operazione controlla periodicamente il token e si arresta non appena rileva che Interrupt() è stato chiamato.
Cosa succede se chiamo Interrupt() dopo che un’operazione è già terminata?
Niente—la chiamata non ha effetto se l’operazione corrispondente è già terminata.
Posso riutilizzare lo stesso InterruptionTokenSource per più attività?
Sì—ma dopo aver chiamato Interrupt() su quella sorgente, tutte le attività che usano i suoi token verranno interrotte. Usa sorgenti di token separate per gestire le attività in modo indipendente.