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

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

Ответить
Настройки темы
.NET - Ожидание завершения процесса

Аватара для Efsey

Пользователь


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

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


Подскажите, каким образом можно заставить программу ждать завершения процесса (нескольких и с одинаковыми именами)?

Отправлено: 10:41, 19-11-2010

 

Аватара для Efsey

Пользователь


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

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


Пока сделал так
Код: Выделить весь код
public void tmc()
        {
            Process[] psl = System.Diagnostics.Process.GetProcessesByName("proga");
                        foreach (Process pl in psl)
                        {
                            Thread.Sleep(10000);
                            this.tmc();
                        }
        }
но это явно какая то ересь...

Отправлено: 10:59, 19-11-2010 | #2



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

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


В Поисках Истины


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

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


Efsey, посмотрите WaitForSingleObject либо WaitForMultipleObject, может быть подойдут!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 12:51, 19-11-2010 | #3


Аватара для Efsey

Пользователь


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

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


Нашел решение попроще:
Код: Выделить весь код
public void tmc()
{
Process[] chr;
            chr = Process.GetProcessesByName("proga");
            chr[0].WaitForExit();
}
может кому пригодится

Последний раз редактировалось Efsey, 23-11-2010 в 15:17.


Отправлено: 14:54, 19-11-2010 | #4


Аватара для Efsey

Пользователь


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

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


Не ругайте, но у меня новый вопрос. Как дождаться завершения только 2-х последних запущенных программ, если в памяти их штук 5-6?

Отправлено: 15:32, 23-11-2010 | #5


В Поисках Истины


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

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


Efsey, а программы запускаются из вашего приложения?

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 16:07, 23-11-2010 | #6


Аватара для Efsey

Пользователь


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

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


Тут такая схема - одна программа запускается вручную и выключать её нельзя, остальные запускаются через мою прогу этим:
Код: Выделить весь код
System.Diagnostics.Process.Start(PathCompiler, ArgCompiler);
Написано в C#.

Отправлено: 18:03, 23-11-2010 | #7


В Поисках Истины


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

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


Ну я так предполагаю, это можно реализовать через : при запуске процесса запоминать хэндл, ну а по нему уже завершать этот процесс!Или такой вариант Вам не подходит?

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 18:12, 23-11-2010 | #8


Аватара для Efsey

Пользователь


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

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


Эээ, как бы сказать... Я этого пока не умею=(
Покажите, пожалуйста, пример)

Отправлено: 18:18, 23-11-2010 | #9


В Поисках Истины


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

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


Ну я как бы с этим тоже не сталкивался, но можно попробовать разобраться с этим! Могу предложить пока что чисто теоретически, т.к. в данный момент нету под рукой C#.
Допустим нужно запустить программу Программа1.exe.
Код: Выделить весь код
Process proc = new Process();
proc.StartInfo.FileName = "Программа1.ехе";
proc.Start();
IntPtr hProc = Proc.Handle; //по идее в hProc должен записаться Хэндл, либо я совсем не прав, поправьте если что!
Не забываем про
Код: Выделить весь код
using System.Diagnostics
.

Если процессов много запускается, то делаем все для каждого!
Потом, если все таки воспользоваться
Цитата:
WaitForMultipleObject »
, то из всех хэндлов создать массив,либо создавать его сразу, и запускать саму функцию!

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:31, 23-11-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ожидание разных названий Окон, WinWaitActive He4To AutoIt 7 17-09-2010 14:23
Интерфейс - [решено] Абракадабры на окошках завершения работы и завершения сеанса nvideo Microsoft Windows 2000/XP 2 26-02-2008 14:17
Ожидание при печати в терминале. EgOrus Microsoft Windows NT/2000/2003 2 28-05-2007 12:08
C++ Builder->Определение времени, необходимого для завершения процесса XCodeR Программирование и базы данных 6 18-01-2005 14:40
Прерывание процесса завершения работы ПК Greyman Хочу все знать 5 17-03-2004 06:14




 
Переход