Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
Alex90
20 / 20 / 1
Регистрация: 30.01.2009
Сообщений: 103
#1

WaitForSingleObject вешает интерфейс - C++

01.02.2010, 10:30. Просмотров 1870. Ответов 2
Метки нет (Все метки)

Вот решил написать функцию для запуска процесса и ожидание завершения.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void StartAndWait (char* Program, char* WorkDirectory)
{
    STARTUPINFO cif;
    ZeroMemory(&cif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
 
        if(CreateProcess(Program,NULL,NULL,NULL,FALSE,FALSE,NULL,WorkDirectory,&cif,&pi))
        {
 
         if(WaitForSingleObject(pi.hProcess, INFINITE) == WAIT_OBJECT_0)
        {
//если программа завершилась выполнить этот кусок кода        
        }
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    }                    
}
Но она вешает интерфейс программы до завершение процесса. Как исправить чтобы не происходило зависание интерфеса?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2010, 10:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос WaitForSingleObject вешает интерфейс (C++):

WaitForSingleObject - C++
Приветствую. Вот собственно код который нужно поправить. void changeFile() { DWORD dwWaitStatus; HANDLE dwChangeHandles; ...

WaitForSingleObject и многопоточность - C++
Добрый день! Мучаюсь с такой задачкой. Имеется C++ DLL, которую до меня писал другой программист. Одна из ее функций хватает(считывает,...

Потоки. WaitForSingleObject. - C++
Здравствуйте! Помогите пожалуйста решить проблему. Читать лучше сразу самый низ кода - большой комент, там в принципе вся проблема и...

Приложение останавливается на WaitForSingleObject - C++
Виснет приложение через не определенное время после старта, стек вызов показывает что программа останавливается на функции...

Вешает ноутбук - C++
Прикиньте, при запускепрограммы, содержащей следующие строки, пошли конкретные тормоза. Что и ожидалось. Хотя памяти она ест но и и не...

WaitForSingleObject - проблема! - C++/CLI WinForms
здравствуйте, у меня есть шаблонный список елементов структуры struct proc { int exename; int outfile; int size_time; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
01.02.2010, 10:40 #2
ожидать в отдельном потоке
0
Alex90
20 / 20 / 1
Регистрация: 30.01.2009
Сообщений: 103
01.02.2010, 11:39  [ТС] #3
вот переделал в такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class ThreadClass
{
public:
static void __cdecl thread_proc(void* pParam)
{
    STARTUPINFO cif;
    ZeroMemory(&cif,sizeof(STARTUPINFO));
    PROCESS_INFORMATION pi;
 
        if(CreateProcess([B]Program[/B],NULL,NULL,NULL,FALSE,FALSE,NULL,[B]WorkDirectory[/B],&cif,&pi))
        {
 
         if(WaitForSingleObject(pi.hProcess, INFINITE) == WAIT_OBJECT_0)
        {
//если программа завершилась выполнить этот кусок кода        
        }
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
    }                    
}        
};
 
void StartAndWait (char* Program, char* WorkDirectory, char* test)
{
   _beginthread(ThreadClass::thread_proc, 0, 0);                   
}
Как теперь передать параметры Program и WorkDirectory
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2010, 11:39
Привет! Вот еще темы с ответами:

Не работает WaitForSingleObject - Delphi
Надобно, чтобы главный поток застопорился и подождал, пока один из дочерних не скажет, что можно идти: Главный: ...

SetEvent + WaitForSingleObject - Delphi WinAPI
Есть ли гарантия, что WaitForSingleObject успеет сработать, если другой поток сделает SetEvent и CloseHandle подряд? Добавлено через...

Мютекс и WaitForSingleObject - C#
Тренируюсь для личного интереса перевожу с С++ на С#. За мой бредняк не ругайте. Вот код на с++ UINT EventThread(LPVOID pParam) { ...

WaitForSingleObject - вопрос. - C++ WinAPI
Привет. WinApi функция WaitForSingleObject. Как она работает? Ждет завершения патока (тот, что первий параметр), зачем тогда задержка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru