ADN Open CIS
Сообщество программистов Autodesk в СНГ

11/09/2015

Как отобразить статус внешнего процесса в командной строке AutoCAD

Предположим, что у нас имеется .NET-команда, которая запускает внешний процесс, которому требуется много времени для выполнения. Пока мы ожидаем его завершения, мы можем вывести индикатор прогресса в командную строку.

Замечание: Следующая процедура доступна начиная с .NET 4.5, так как использует методы await и async.

Код - C#: [Выделить]
  1. [CommandMethod("TestCommand")]
  2. static public void TestCommand()
  3. {
  4.   Method1();
  5. }
  6.  
  7. static public async void Method1()
  8. {
  9.   try
  10.   {
  11.     var doc = Application.DocumentManager.MdiActiveDocument;
  12.     var ed = doc.Editor;
  13.     for (int i = 0; i < 20; i++)
  14.     {
  15.       ed.WriteMessage("Обрабатывается {0}...", i);
  16.       string result = await WaitASynchronously();
  17.       ed.WriteMessage("Выполнено.\n");
  18.     }
  19.   }
  20.  
  21.   catch (System.Exception ex)
  22.   {
  23.     Application.ShowAlertDialog("Ошибка: " + ex.Message);
  24.   }
  25. }
  26.  
  27. static public async Task<string> WaitASynchronously()
  28. {
  29.   await Task.Delay(500);
  30.   return "Завершено";
  31. }

 

Источник: http://adndevblog.typepad.com/autocad/2015/08/how-to-update-the-status-of-external-process-to-autocad-commandline.html

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=3007

Опубликовано 11.09.2015