Выпуск № 154 от 06.07.2009, 08:05
Администратор рассылки: Alexey G. Gladenyuk, Управляющий
В рассылке: подписчиков - 309, экспертов - 52
В номере: вопросов - 1, ответов - 1
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 170045: Доброго всем времени суток. Я работаю в DELPHI, но решил изучить и C#. Для практики решил перевести несколько своих дельфийских проектов в .NET. В связи с этим возникли два вопроса. Как из своей программы запустить другую (впринципе нашел SYSTEM.DIAG...
Вопрос № 170045:
Доброго всем времени суток. Я работаю в DELPHI, но решил изучить и C#. Для практики решил перевести несколько своих дельфийских проектов в .NET. В связи с этим возникли два вопроса. Как из своей программы запустить другую (впринципе нашел SYSTEM.DIAGNOSTICS.PROCESS.START, но может посоветуете что-нибудь ещё). И второе как мне узнать выполняется ли запущенная программа, или уже закончила свою работу. То есть я хочу запустить внешнею прогу, подождать завершение её работы, и продолжить свою. Буду благодарен
за ответы, и за ссылки на материалы по этой теме.
Отвечает Micren, Практикант :
Здравствуйте, Мамотенко Алексей Григорьевич. Класс Process это очень нужный класс, позволяющий запускать процессы так как Вам это надо. Вот решение "в лоб".
Код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using
System.Diagnostics;
namespace test_cs { class Program { static void Main(string[] args) { ProcessStartInfo info = new ProcessStartInfo(@"C:\Program Files (x86)\Internet Explorer\iexplore.exe"); Process p = Process.Start(info);
Следует сказать, что это не лучший способ. Т.к. во время ожидания будет блокироваться интерфейс Вашего приложения. Да и лучше потратить процессорное время на что нибудь более полезное, чем ожидание.
Второй пример. Здесь мы ничего не ждем, а просим сам класс Process сгенерировать событие по завершении. Программа может заниматься чем угодно, а обработчик будет вызван когда придет время.
Код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics;
namespace test_cs { class Program { static void Main(string[] args) { ProcessStartInfo info = new ProcessStartInfo(@&qu
ot;C:\Program Files (x86)\Internet Explorer\iexplore.exe"); Process p = new Process(); p.StartInfo = info;
p.Exited += new EventHandler(ie_exited); // Связываем событие завершения с нашим обработчиком p.EnableRaisingEvents = true; // Просим генерировать событие завершения
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.