Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - как контролировать ход выполнения запущенного процесса

Ответить
Настройки темы
.NET - как контролировать ход выполнения запущенного процесса

Аватара для RUVATA

Старожил


Сообщения: 301
Благодарности: 16


Конфигурация

Профиль | Отправить PM | Цитировать


Всем доброго времени суток... smile
среда:Visual Studio 2010

Cитуация следующая:
Суть программы - производить архивирование и по хитрой своей логике раскладывать, рассылать эти в архивы, в зависимости от тех или иных условий, при этом совсем не исключено, что данные которые необходимо будет заархивировать в этот момент будут использоваться, в связи с чем (реакция на ошибку запущенного процесса) программе необходимо будет перейти к следующему архивированию, но в последствии попробовать еще несколько раз, в случае провала - запись в лог и.т. д

Для решения данной задачи... мне совсем не надо "кнопочной мишуры", потому - консольное приложение...
И всё вроде неплохо пока дело не доходит как раз до исключения, когда файлы уже используются

суть:
Я не делаю перенаправление ввода/вывода от запускаемых процессов 7zip... в главном окне консоли формируется отчет.
Запущенные процессы открываются отдельными консолями, при этом моя программа приспокойненько двигает дальше
(а я бы хотел, чтобы основная программа дождалась реакции запущенного ей процесса, как это сделать?)
для запуска процессов я использую конструкцию:

Код: Выделить весь код
Dim zip7 As New Process
                                              '7zip описан в ситст.PATH
                zip7.StartInfo.FileName = "7z"
                zip7.StartInfo.Arguments = "a -tzip " & "сформированное имя архива" & " " & "архивируемый каталог"
                zip7.Start()
... если все нормально, в открывшихся консольных окнах мы видим там мы видим ход выполнения архивирования, а посля окошко закрывается...

хотелось бы знать, я могу вобще этими окнами управлять? т.е. приостановить используя Console.Readkey и.т. д?
как отслеживать ход выполнения. процесса, получить от него сообщение об ошибке или наоборот об успешном завершении... ?
поигавшись...
Код: Выделить весь код
                zip7.StartInfo.UseShellExecute = False
                zip7.StartInfo.RedirectStandardInput = True
                zip7.StartInfo.RedirectStandardOutput = False
можно добиться того, что окна вообще отображаться не будут, что вообщем-то и нужно но при этом
неизвестно успешно или нет... вобщем как-то так...

Перелопатил гору разнообразных учебников... но там все о синтаксисе, да о функциях в основном...
А хотелось бы описания способов управления процессами, данными, вообще системой... может подскажет кто литературу.

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...


Отправлено: 09:27, 31-08-2010

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Надо смотреть функции 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=

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 09:40, 31-08-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для RUVATA

Старожил


Сообщения: 301
Благодарности: 16

Профиль | Отправить PM | Цитировать


как вообще юзать запущенные процессы... есть например у Process такое свойство:
Process.StandardError
'Получает поток, используемый для чтения вывода ошибок приложения
Есть у Process такой метод:
Process.StartInfo.RedirectStandardError
'Возвращает или задает значение, позволяющее определить, записываются ли выходные данные об ошибках в поток Process ..::.StandardError

вот как мне этот Process.StandardError запихнуть например в StremReader...

да и вообще где можно уму разуму набраться по потокам, где их, как ловить и т.д.

СУТЬ:
Объявляем объект - процесс
Объявляем объект - стрим-ридер
Об являем объект - поток (поток ошибок процесс)
Присваиваем процесс аргументы
Запускаем процесс
приостанавливаем ход до окончания процесс
получаем в стрим-редер - поток
обрабатываем их ... и от этого пляшем.

-------
Одно дело искать сиюминутное решение, другое - искать знания...
вот и думай - что ты ищешь...


Отправлено: 11:52, 31-08-2010 | #3


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


RUVATA, в этом случаи рациональнее смотреть в сторону LZMA SDK и получать ответ об успешности операций компрессии непосредственно от соответственных функций.

Отправлено: 14:00, 31-08-2010 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - как контролировать ход выполнения запущенного процесса

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Проверка запущенного процесса Anarasius AutoIt 2 25-06-2014 11:39
CMD/BAT - [решено] Ход выполнения!!! Дит Скриптовые языки администрирования Windows 19 18-06-2010 06:22
.NET - Получение PID процесса, запущенного из программы Delirium Программирование и базы данных 2 07-12-2009 02:17
Java - Отслеживание состояния запущенного процесса EvgeniyQQQ Программирование и базы данных 15 02-10-2007 13:20
А можно для уже запущенного процесса сменить user-a ? ukms Программирование и базы данных 6 23-10-2002 13:51




 
Переход