Interrompi la conversione o il caricamento utilizzando InterruptMonitor quando impiega troppo tempo

Possibili scenari di utilizzo

Aspose.Cells consente di interrompere la conversione della cartella di lavoro in vari formati come PDF, HTML, ecc. utilizzando ilMonitor di interruzioneoggetto quando ci vuole troppo tempo. Il processo di conversione è spesso intensivo sia per la CPU che per la memoria ed è spesso utile interromperlo quando le risorse sono limitate. Puoi usareMonitor di interruzionesia per interrompere la conversione che per interrompere il caricamento di un’enorme cartella di lavoro. Si prega di utilizzareWorkbook.InterruptMonitorproprietà per interrompere la conversione eLoadOptions.InterruptMonitorproprietà per il caricamento di una cartella di lavoro enorme.

Interrompi la conversione o il caricamento utilizzando InterruptMonitor quando impiega troppo tempo

Il seguente codice di esempio spiega l’utilizzo diMonitor di interruzioneoggetto. Il codice converte un file Excel piuttosto grande in PDF. Ci vorranno diversi secondi (es.più di 30 secondi) per convertirlo a causa di queste righe di codice.

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

Cell cell = ws.getCells().get("AB1000000");

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

Come vediAB1000000è piuttosto una cella più lontana nel file XLSX. comunque, il*WaitForWhileAndThenInterrupt()*Il metodo interrompe la conversione dopo 10 secondi e il programma termina/termina. Utilizzare il codice seguente per eseguire il codice di esempio.

new StopConversionOrLoadingUsingInterruptMonitor().testRun();

Codice d’esempio

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
public class StopConversionOrLoadingUsingInterruptMonitor
{
static String outDir = Utils.Get_OutputDirectory();
//Create InterruptMonitor object
InterruptMonitor im = new InterruptMonitor();
public class ConversionThread extends Thread
{
private Thread monitorThread;
public ConversionThread(Thread monitorThread)
{
this.monitorThread = monitorThread;
}
//This function will create workbook and convert it to Pdf format
void createWorkbookAndConvertItToPdfFormat() throws Exception
{
//Create a workbook object
Workbook wb = new Workbook();
//Assign it InterruptMonitor object
wb.setInterruptMonitor(im);
//Access first worksheet
Worksheet ws = wb.getWorksheets().get(0);
//Access cell AB1000000 and add some text inside it.
Cell cell = ws.getCells().get("AB1000000");
cell.putValue("This is text.");
try
{
//Save the workbook to Pdf format
wb.save(outDir + "output_InterruptMonitor.pdf");
//Show successful message
System.out.println("Excel to PDF - Successful Conversion");
//stop monitor thread
monitorThread.interrupt();
}
catch (CellsException ex)
{
if(ex.getCode() == ExceptionType.INTERRUPTED)
{
System.out.println("Conversion process is interrupted - Message: " + ex.getMessage());
}
else
{
throw ex;
}
}
}
public void run()
{
try
{
createWorkbookAndConvertItToPdfFormat();
}
catch(Exception ex)
{
System.out.println("Conversion thread error - Message: " + ex.getMessage());
}
}
}//ConversionThread
public class MonitorThread extends Thread
{
//This function will interrupt the conversion process after 10s
void waitForWhileAndThenInterrupt() throws Exception
{
Thread.sleep(1000 * 10);
im.interrupt();
}
public void run()
{
try
{
waitForWhileAndThenInterrupt();
}
catch (InterruptedException ex)
{
System.out.println("Monitor thread is interrupted - Message: " + ex.getMessage());
}
catch (Exception ex)
{
System.out.println("Monitor thread error - Message: " + ex.getMessage());
}
}
}//MonitorThread
public void testRun() throws Exception
{
MonitorThread monitorThread = new MonitorThread();
ConversionThread conversionThread = new ConversionThread(monitorThread);
monitorThread.start();
conversionThread.start();
monitorThread.join();
conversionThread.join();
}
public static void main(String[] args) throws Exception
{
new StopConversionOrLoadingUsingInterruptMonitor().testRun();
// Print the message
System.out.println("StopConversionOrLoadingUsingInterruptMonitor executed successfully.");
}
}//StopConversionOrLoadingUsingInterruptMonitor