중단 가능한 라이브러리 지원
개요
Aspose.Slides는 역직렬화, 직렬화 및 렌더링과 같은 장시간 실행되는 프레젠테이션 작업을 중단할 수 있는 처리 메커니즘을 제공합니다. 이 메커니즘은 InterruptionToken 및 InterruptionTokenSource 클래스를 기반으로 합니다.
InterruptionToken은 LoadOptions에 할당하고 Presentation 생성자에 전달할 수 있습니다. InterruptionTokenSource.interrupt()가 호출되면 관련된 장시간 작업이 중단됩니다.
중단 가능한 라이브러리
Aspose.Slides 18.4에서는 InterruptionToken 및 InterruptionTokenSource 클래스를 도입했습니다. 이들은 역직렬화, 직렬화 및 렌더링과 같은 장시간 작업을 중단할 수 있게 합니다.
- InterruptionTokenSource은 ILoadOptions.setInterruptionToken에 전달되는 토큰(들)의 소스입니다.
- ILoadOptions.setInterruptionToken이 설정되고 LoadOptions 인스턴스가 Presentation 생성자에 전달될 때, InterruptionTokenSource.Interrupt()를 호출하면 해당 Presentation과 연관된 모든 장시간 작업이 중단됩니다.
다음 코드 스니펫은 실행 중인 작업을 중단하는 방법을 보여줍니다:
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(); // 작업을 별도 스레드에서 실행합니다
Thread.sleep(10000); // 시간 초과
tokenSource.interrupt(); // 변환을 중단합니다
자주 묻는 질문
Aspose.Slides 인터럽트 라이브러리의 목적은 무엇입니까?
이 라이브러리는 로드, 저장 또는 프레젠테이션 렌더링과 같은 장시간 작업을 완료되기 전에 중단할 수 있는 메커니즘을 제공합니다. 처리 시간을 제한해야 하거나 작업이 더 이상 필요하지 않을 때 유용합니다.
[InterruptionToken]와 [InterruptionTokenSource]의 차이점은 무엇입니까?
InterruptionToken은 Aspose.Slides API에 전달되며 장시간 작업 중에 확인됩니다.InterruptionTokenSource는 코드에서 토큰을 생성하고Interrupt()를 호출하여 중단을 트리거하는 데 사용됩니다.
어떤 작업을 중단할 수 있습니까?
[InterruptionToken]을 허용하는 모든 Aspose.Slides 작업—예를 들어 Presentation(path, loadOptions)로 프레젠테이션을 로드하거나 Presentation.save(...)로 저장하는 경우—는 중단될 수 있습니다.
중단이 즉시 발생합니까?
아니요. 중단은 협력 방식으로 이루어집니다. 작업은 주기적으로 토큰을 확인하고 [Interrupt()]가 호출되었음을 감지하면 즉시 중단됩니다.
작업이 이미 완료된 후에 [Interrupt()]를 호출하면 어떻게 됩니까?
아무 일도 일어나지 않습니다—해당 작업이 이미 완료된 경우 호출은 영향을 미치지 않습니다.
여러 작업에 동일한 [InterruptionTokenSource]를 재사용할 수 있습니까?
예—but 해당 소스에서 [Interrupt()]를 호출하면, 그 토큰을 사용하는 모든 작업이 중단됩니다. 작업을 독립적으로 관리하려면 별도의 토큰 소스를 사용하십시오.