Suporte para Biblioteca Interrompível
Visão geral
Aspose.Slides fornece um mecanismo de processamento interrompível para tarefas de apresentação de longa duração, como desserialização, serialização e renderização. Esse mecanismo baseia‑se nas classes InterruptionToken e InterruptionTokenSource.
Um InterruptionToken pode ser atribuído ao LoadOptions e passado ao construtor Presentation. Quando InterruptionTokenSource.interrupt() é chamado, a tarefa de longa duração associada é interrompida.
Biblioteca interrompível
Na versão Aspose.Slides 18.4, introduzimos as classes InterruptionToken e InterruptionTokenSource. Elas permitem interromper tarefas de longa duração, como desserialização, serialização e renderização.
- InterruptionTokenSource é a fonte do(s) token(s) passado(s) para ILoadOptions.setInterruptionToken.
- Quando ILoadOptions.setInterruptionToken está definido e a instância de LoadOptions é passada ao construtor de Presentation, a chamada a InterruptionTokenSource.Interrupt() interrompe qualquer tarefa de longa duração associada a essa Presentation.
O trecho de código a seguir demonstra a interrupção de uma tarefa em execução:
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(); // executar a ação em uma thread separada
Thread.sleep(10000); // tempo limite
tokenSource.interrupt(); // parar a conversão
Perguntas frequentes
Qual é o objetivo da biblioteca de interrupção do Aspose.Slides?
Ela fornece um mecanismo para interromper operações de longa duração — como carregar, salvar ou renderizar apresentações — antes que sejam concluídas. Isso é útil quando o tempo de processamento deve ser limitado ou a tarefa não é mais necessária.
Qual a diferença entre InterruptionToken e InterruptionTokenSource?
InterruptionTokené passado para a API do Aspose.Slides e verificado durante operações demoradas.InterruptionTokenSourceé usado no seu código para criar tokens e disparar interrupções chamandoInterrupt().
Quais tarefas podem ser interrompidas?
Qualquer tarefa do Aspose.Slides que aceite um InterruptionToken — como carregar uma apresentação com Presentation(path, loadOptions) ou salvar com Presentation.save(...) — pode ser interrompida.
A interrupção ocorre imediatamente?
Não. A interrupção é cooperativa: a operação verifica periodicamente o token e para assim que detecta que Interrupt() foi chamado.
O que acontece se eu chamar Interrupt() depois que a tarefa já foi concluída?
Nada — a chamada não tem efeito se a tarefa correspondente já foi concluída.
Posso reutilizar o mesmo InterruptionTokenSource para várias tarefas?
Sim — mas depois de chamar Interrupt() nesse source, todas as tarefas que utilizam seus tokens serão interrompidas. Use fontes de token separadas para gerenciar tarefas independentemente.