Прекратите преобразование или загрузку с использованием объекта InterruptMonitor, если это занимает слишком много времени

Возможные сценарии использования

Aspose.Cells позволяет остановить преобразование рабочей книги в различные форматы, такие как PDF, HTML и т. д., используя объект InterruptMonitor, когда оно занимает слишком много времени. Процесс преобразования часто интенсивно использует ресурсы ЦП и памяти, поэтому полезно останавливать его, когда ресурсы ограничены. Вы можете использовать InterruptMonitor как для остановки преобразования, так и для остановки загрузки большой рабочей книги. Пожалуйста, используйте свойство Workbook.InterruptMonitor для остановки преобразования и свойство LoadOptions.InterruptMonitor для загрузки большой рабочей книги.

Прекратите преобразование или загрузку с использованием объекта InterruptMonitor, если это занимает слишком много времени

В следующем образце кода объясняется использование объекта InterruptMonitor. Код преобразует довольно большой файл Excel в PDF. Это займет несколько секунд (т.е. более 30 секунд) для преобразования из-за этих строк кода.

//Access cell J1000000 and add some text inside it.

Cell cell = ws.Cells["J1000000"];

cell.PutValue("This is text.");

Как видите, J1000000 находится довольно далеко от ячейки в файле XLSX. Однако метод WaitForWhileAndThenInterrupt() прерывает преобразование после 10 секунд, и программа завершается. Пожалуйста, используйте следующий код для выполнения образца кода.

 new StopConversionOrLoadingUsingInterruptMonitor().TestRun();

Образец кода

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
public class StopConversionOrLoadingUsingInterruptMonitor
{
//Output directory
static string outputDir = RunExamples.Get_OutputDirectory();
//Create InterruptMonitor object
InterruptMonitor im = new InterruptMonitor();
//This function will create workbook and convert it to Pdf format
void CreateWorkbookAndConvertItToPdfFormat(object threadObj)
{
Thread monitorThread = (Thread)threadObj;
//Create a workbook object
Workbook wb = new Workbook();
//Assign it InterruptMonitor object
wb.InterruptMonitor = im;
//Access first worksheet
Worksheet ws = wb.Worksheets[0];
//Access cell J1000000 and add some text inside it.
Cell cell = ws.Cells["J1000000"];
cell.PutValue("This is text.");
try
{
//Save the workbook to Pdf format
wb.Save(outputDir + "output_InterruptMonitor.pdf");
//Show successful message
Console.WriteLine("Excel to PDF - Successful Conversion");
//stop monitor thread
monitorThread.Interrupt();
}
catch (Aspose.Cells.CellsException ex)
{
if (ex.Code == ExceptionType.Interrupted)
{
Console.WriteLine("Conversion process is interrupted - Message: " + ex.Message);
}
else
{
throw ex;
}
}
}
//This function will interrupt the conversion process after 10s
void WaitForWhileAndThenInterrupt()
{
try
{
Thread.Sleep(1000 * 10);
im.Interrupt();
}
catch(ThreadInterruptedException e)
{
Console.WriteLine("Monitor thread is interrupted - Message: " + e.Message);
}
}
public void TestRun()
{
Thread monitorThread = new Thread(WaitForWhileAndThenInterrupt);
Thread conversionThread = new Thread(CreateWorkbookAndConvertItToPdfFormat);
monitorThread.Start();
conversionThread.Start(monitorThread);
monitorThread.Join();
conversionThread.Join();
}
public static void Run()
{
new StopConversionOrLoadingUsingInterruptMonitor().TestRun();
Console.WriteLine("StopConversionOrLoadingUsingInterruptMonitor executed successfully.");
}
}