Çok uzun sürüyorsa, Durdur dönüşümü veya yüklemeyi kullanarak InterruptMonitor
Olası Kullanım Senaryoları
Aspose.Cells, kaynakların sınırlı olduğu durumlarda dönüşümün uzun sürdüğünde PDF, HTML vb. farklı formattaki dönüşümü InterruptMonitor nesnesini kullanarak durdurmanıza izin verir. Dönüşüm süreci genellikle hem CPU hem de Bellek yoğundur ve kaynaklar sınırlı olduğunda durdurmak faydalı olabilir. Dönüşümü durdurmak için Workbook.InterruptMonitor özelliğini, büyük bir çalışma kitabını yüklerken durdurmak için InterruptMonitor kullanabilirsiniz lütfen. Dönüşüm durdurmak ve büyük bir çalışma kitabını yüklemek için lütfen LoadOptions.InterruptMonitor özelliğini kullanın.
Çok uzun sürüyorsa, Duraklatma İzleyiciyi kullanarak dönüşümü veya yüklemeyi durdurun
Aşağıdaki örnek kod, InterruptMonitor nesnesinin kullanımını açıklar. Bu kod oldukça büyük bir Excel dosyasını PDF’ye dönüştürür. Kodlar nedeniyle dönüşümün alması birkaç saniye sürebilir (örneğin 30 saniyeden fazla)
//Access cell AB1000000 and add some text inside it.
Cell cell = ws.getCells().get("AB1000000");
cell.putValue("This is text.");
Görüldüğü gibi AB1000000 XLSX dosyasında oldukça uzak bir hücredir. Ancak, WaitForWhileAndThenInterrupt() metodu dönüşümü 10 saniye sonra keser ve program sona erer/bitirilir. Örnek kodu çalıştırmak için aşağıdaki kodu kullanın.
new StopConversionOrLoadingUsingInterruptMonitor().testRun();
Örnek Kod
// 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 |