0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 10
|
||||||
1 | ||||||
Ждать завершения потока (без зависания формы)01.06.2014, 22:50. Показов 9686. Ответов 5
Метки нет (Все метки)
Здравствуйте товарищи!
Столкнулся с такой вот проблемой. Пишу программу, которая запускает через cmd.exe некие команды. Форма зависает на прослушивании ответа от cmd (Оно и понятно, там цикл прослушивания и вывода результата) и отвисает после выполнения. Для решения этой проблемы я использовал поток, но теперь программа не дожидается выполнения функции из потока, а просто запускает его и продолжает работать дальше. Подскажите пожалуйста как сделать так, чтобы запускался отдельный поток, но программа ждала (без зависания формы) его окончания (ну или какого-либо события). Структура работы: Как сейчас:
0
|
01.06.2014, 22:50 | |
Ответы с готовыми решениями:
5
Выполнение фоновых операций без зависания формы Как сделать задержку в программе без зависания формы Ждать завершения backgroundWorker Затемнение формы без приостановок основного потока |
Life Builder
532 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,754
|
|||||||||||
01.06.2014, 23:06 | 2 | ||||||||||
Вот так?
или может лучше повесить обработчик?
0
|
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 10
|
||||||
03.06.2014, 10:27 [ТС] | 3 | |||||
sk007, Ваш способ к сожалению не работает.
А не работает, как я понимаю, потому, что вся функция уже идет в отдельном потоке и основному коду по барабану, выполнилась она уже или нет. То есть эти проверки и обработчики не могут "заморозить" основной код из своего потока. Поправьте если ошибаюсь. Вопрос актуален. Добавлено через 2 часа 32 минуты В общем решилась проблема проще простого. Может и немного по индуски, но работает как нужно. Приведу решение для последующих поколений
0
|
03.06.2014, 11:34 | 4 |
6eH, забудьте про Application.DoEvents(), про "ручной" запуск потоков тоже, ThreadPool есть, он разберётся что создать.
что касается ожидания, Вы неправильно подходите к решению задачи, можно и просто RichTextBox для чтения сделать, коль уж нужно дождаться.
1
|
0 / 0 / 0
Регистрация: 05.05.2014
Сообщений: 10
|
|
04.06.2014, 00:43 [ТС] | 5 |
Был бы благодарен за наглядный пример.
Обязательно почитаю про ThreadPool. И что значит : "... RichTextBox для чтения сделать ..."
0
|
04.06.2014, 09:22 | 6 | |||||
Создайте формочку Form1, киньте туда следующее:
1
|
04.06.2014, 09:22 | |
04.06.2014, 09:22 | |
Помогаю со студенческими работами здесь
6
Если запустить 2 потока, будет ли один ждать, пока завершится другой Ожидание завершения потока Как правильно дождаться завершения потока? Десериализация. Конец потока обнаружен до завершения разбора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |