Çok uzun sürdüğünde InterruptMonitor kullanarak dönüştürmeyi veya yüklemeyi durdurun
Olası Kullanım Senaryoları
Aspose.Diagram, Diagram’in PDF, HTML gibi çeşitli biçimlere dönüştürülmesini durdurmanıza olanak tanır.Kesinti İzleme çok uzun sürdüğünde itiraz edin. Dönüştürme işlemi genellikle hem CPU hem de Bellek açısından yoğundur ve kaynaklar sınırlı olduğunda genellikle işlemi durdurmak yararlıdır. KullanabilirsinizKesinti İzleme hem dönüştürmeyi durdurmak hem de büyük diagram yüklemesini durdurmak için. Lütfen kullanınDiagram.InterruptMonitor dönüştürmeyi durdurma özelliği veLoadOptions.InterruptMonitor büyük yükleme özelliği diagram.
Çok uzun sürdüğünde InterruptMonitor kullanarak dönüştürmeyi veya yüklemeyi durdurun
Aşağıdaki örnek kod, kullanımını açıklarKesinti İzleme nesne. Kod oldukça büyük bir Visio dosyasını PDF’e dönüştürür. Birkaç saniye sürecektir (örn.30 saniyeden fazla) bu kod satırları nedeniyle dönüştürülmesini sağlamak için.
Aspose.Diagram.LoadOptions o = new Aspose.Diagram.LoadOptions(LoadFileFormat.VSDX);
o.InterruptMonitor = im;
Diagram diagram = new Diagram("Huge.vsdx", o);
Gördüğünüz gibiÇok büyük.vsdx oldukça büyük bir VSDX dosyasıdır. Ancak**WaitForWhileAndThenInterrupt()**yöntemi 1 saniye sonra dönüştürmeyi keser ve program biter/sonlanır. Lütfen örnek kodu çalıştırmak için aşağıdaki kodu kullanın.
new StopConversionOrLoadingUsingInterruptMonitor().TestRun();
Basit kod
static string outputDir = RunExamples.Get_OutputDirectory(); | |
//Create InterruptMonitor object | |
InterruptMonitor im = new InterruptMonitor(); | |
//This function will load diagram | |
void loadDiagram() | |
{ | |
try | |
{ | |
Aspose.Diagram.LoadOptions o = new Aspose.Diagram.LoadOptions(LoadFileFormat.VSDX); | |
o.InterruptMonitor = im; | |
Diagram diagram = new Diagram("Huge.vsdx", o); | |
} | |
catch(Exception e) | |
{ | |
Console.WriteLine("Diagram Process Interrupted - Message: " + e.Message); | |
} | |
} | |
//This function will interrupt the conversion process after 1s | |
void WaitForWhileAndThenInterrupt() | |
{ | |
Thread.Sleep(1000 * 1); | |
im.Interrupt(); | |
} | |
public void TestRun() | |
{ | |
ThreadStart ts1 = new ThreadStart(this.loadDiagram); | |
Thread t1 = new Thread(ts1); | |
t1.Start(); | |
ThreadStart ts2 = new ThreadStart(this.WaitForWhileAndThenInterrupt); | |
Thread t2 = new Thread(ts2); | |
t2.Start(); | |
t1.Join(); | |
t2.Join(); | |
} | |
public static void Run() | |
{ | |
new StopConversionOrLoadingUsingInterruptMonitor().TestRun(); | |
Console.WriteLine("Interrupt successfully."); | |
} |