как контролировать ход выполнения запущенного процесса
Всем доброго времени суток... smile
среда:Visual Studio 2010 Cитуация следующая: Суть программы - производить архивирование и по хитрой своей логике раскладывать, рассылать эти в архивы, в зависимости от тех или иных условий, при этом совсем не исключено, что данные которые необходимо будет заархивировать в этот момент будут использоваться, в связи с чем (реакция на ошибку запущенного процесса) программе необходимо будет перейти к следующему архивированию, но в последствии попробовать еще несколько раз, в случае провала - запись в лог и.т. д Для решения данной задачи... мне совсем не надо "кнопочной мишуры", потому - консольное приложение... И всё вроде неплохо пока дело не доходит как раз до исключения, когда файлы уже используются суть: Я не делаю перенаправление ввода/вывода от запускаемых процессов 7zip... в главном окне консоли формируется отчет. Запущенные процессы открываются отдельными консолями, при этом моя программа приспокойненько двигает дальше (а я бы хотел, чтобы основная программа дождалась реакции запущенного ей процесса, как это сделать?) для запуска процессов я использую конструкцию: Код:
Dim zip7 As New Process хотелось бы знать, я могу вобще этими окнами управлять? т.е. приостановить используя Console.Readkey и.т. д? как отслеживать ход выполнения. процесса, получить от него сообщение об ошибке или наоборот об успешном завершении... ? поигавшись... Код:
zip7.StartInfo.UseShellExecute = False неизвестно успешно или нет... вобщем как-то так... Перелопатил гору разнообразных учебников... но там все о синтаксисе, да о функциях в основном... А хотелось бы описания способов управления процессами, данными, вообще системой... может подскажет кто литературу. |
Надо смотреть функции Process. Вот пример вывода результата в текущее окно:
http://www.java2s.com/Code/CSharp/De...cessOutput.htm http://msdn.microsoft.com/en-us/libr...ardoutput.aspx Пошуршите по поиску по такому критерию: http://www.google.ru/search?hl=ru&q=...%B2+Google&lr= |
как вообще юзать запущенные процессы... есть например у Process такое свойство:
Process.StandardError 'Получает поток, используемый для чтения вывода ошибок приложения Есть у Process такой метод: Process.StartInfo.RedirectStandardError 'Возвращает или задает значение, позволяющее определить, записываются ли выходные данные об ошибках в поток Process ..::.StandardError вот как мне этот Process.StandardError запихнуть например в StremReader... да и вообще где можно уму разуму набраться по потокам, где их, как ловить и т.д. СУТЬ: Объявляем объект - процесс Объявляем объект - стрим-ридер Об являем объект - поток (поток ошибок процесс) Присваиваем процесс аргументы Запускаем процесс приостанавливаем ход до окончания процесс получаем в стрим-редер - поток обрабатываем их ... и от этого пляшем. |
RUVATA, в этом случаи рациональнее смотреть в сторону LZMA SDK и получать ответ об успешности операций компрессии непосредственно от соответственных функций.
|
Время: 06:40. |
Время: 06:40.
© OSzone.net 2001-