Hello,
I need help interrupting the Convert or Save actions of an Aspose.Pdf.Document. I tried adapting a sample code I found, but without success.
The goal is to stop these operations and free hardware resources if the process takes longer than a specified timeout. In the example below, I attempt to interrupt the action after 15 seconds, but it seems that the process continues running even after calling Interrupt.
What is the correct way to achieve this goal?
Here is the code I am using:
using Aspose.Pdf;
using Aspose.Pdf.Multithreading;
string dataDir = @"c:\temp4";
InterruptMonitor monitor = new InterruptMonitor();
PdfWorker worker = new PdfWorker(dataDir + “cfc.pdf”, dataDir + “cfc-out.pdf”, monitor);
Thread thread = new Thread(new ThreadStart(worker.ThreadProc));
try
{
thread.Start();
Thread.Sleep(15000);
monitor.Interrupt();
thread.Join();
}
finally
{
}
class PdfWorker
{
private readonly string inputPath;
private readonly string outputPath;
private readonly InterruptMonitor monitor;
public PdfWorker(string inputPath, string outputPath, InterruptMonitor monitor)
{
this.inputPath = inputPath;
this.outputPath = outputPath;
this.monitor = monitor;
}
public void ThreadProc()
{
using (Document document = new Document(this.inputPath))
{
InterruptMonitor.ThreadLocalInstance = this.monitor;
try
{
PdfFormatConversionOptions options = new PdfFormatConversionOptions(PdfFormat.PDF_A_1B);
document.Convert(options);
document.Save(this.outputPath);
}
catch (Exception e)
{
Console.WriteLine(e);
}
finally
{
InterruptMonitor.ThreadLocalInstance = null;
}
}
}
}