Stoppa konvertering eller inläsning med avbrottsövervakning när det tar för lång tid

Möjliga användningsscenario

Aspose.Cells tillåter dig att stoppa konverteringen av arbetsbok till olika format som PDF, HTML etc. med hjälp av InterruptMonitor -objektet när det tar för lång tid. Konverteringsprocessen är ofta både CPU- och minnesintensiv och det är ofta användbart att avbryta den när resurserna är begränsade. Du kan använda InterruptMonitor både för att stoppa konverteringen och för att stoppa inläsning av stora arbetsböcker. Använd Workbook.InterruptMonitor -egenskapen för att stoppa konvertering och LoadOptions.InterruptMonitor -egenskapen för att ladda stora arbetsböcker.

Stoppa konvertering eller laddning med hjälp av InterruptMonitor när det tar för lång tid

Följande kodexempel förklarar användningen av InterruptMonitor -objektet. Koden konverterar en ganska stor Excel-fil till PDF. Det tar flera sekunder (det vill säga mer än 30 sekunder) att konvertera den på grund av dessa kodrader.

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

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

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

Som du ser är J1000000 ganska långt bort cell i XLSX-fil. Dock avbryter WaitForWhileAndThenInterrupt() -metoden konverteringen efter 10 sekunder och programmet avslutas/avslutas. Vänligen använd följande kod för att exekvera exempelkod.

 new StopConversionOrLoadingUsingInterruptMonitor().TestRun();

Exempelkod

// 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.");
}
}