Остановите преобразование или загрузку с помощью InterruptMonitor, если это занимает слишком много времени
Возможные сценарии использования
Aspose.Diagram позволяет остановить преобразование Diagram в различные форматы, такие как PDF, HTML и т. д., используяInterruptMonitor объект, когда это занимает слишком много времени. Процесс преобразования часто интенсивно использует как ЦП, так и память, и часто бывает полезно остановить его, когда ресурсы ограничены. Вы можете использоватьInterruptMonitor как для остановки преобразования, так и для прекращения загрузки огромного diagram. Пожалуйста, используйтеDiagram.InterruptMonitor свойство для остановки преобразования иLoadOptions.InterruptMonitor свойство для загрузки огромного diagram.
Остановите преобразование или загрузку с помощью InterruptMonitor, если это занимает слишком много времени
В следующем примере кода объясняется использованиеInterruptMonitor объект. Код преобразует довольно большой файл Visio в PDF. Это займет несколько секунд (т.е.более 30 секунд), чтобы преобразовать его из-за этих строк кода.
Aspose.Diagram.LoadOptions o = new Aspose.Diagram.LoadOptions(LoadFileFormat.VSDX);
o.InterruptMonitor = im;
Diagram diagram = new Diagram("Huge.vsdx", o);
Как видишьОгромный.vsdx довольно большой файл VSDX. Тем не менее**Ждать для пока и потом прерывать ()**метод прерывает преобразование через 1 секунду, и программа завершается/завершается. Пожалуйста, используйте следующий код для выполнения примера кода.
new StopConversionOrLoadingUsingInterruptMonitor().TestRun();
Образец кода
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."); | |
} |