| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Блокируються кнопки управления при процессе |
| Автор: BoomeR 28.8.2007, 11:07 | ||
При исполнении кода :
На указанном месте происходит "зависание" управляющих элементов, до момента полного выполнения вызванного консольного приложения. Как с этим бороться? |
| Автор: SpaceSpace 28.8.2007, 12:40 |
| делай это асинхронно Добавлено через 1 минуту и 6 секунд ты сам ждешь завершения trans.WaitForExit(); <------------ поэтому всё и зависает |
| Автор: SpaceSpace 28.8.2007, 14:00 | ||||
| попробуй так. делаеш метод, в котором запускаеш процесс.
этот метод вызываеш асинхронно - в новом потоке.
я понял в чем косяк. что такое у тебя ExecuteBox? как я выше показывал может не работать, т.к. будет кросс-потоковое сообщение, т.е. ресурс ExecuteBox, который ты меняеш - находится в одном, а меняющий его процесс в другом потоке |
| Автор: BoomeR 28.8.2007, 14:05 |
| SpaceSpace, да иммено на этом компилятор и ругаеться :( А что делать? |
| Автор: SpaceSpace 28.8.2007, 14:10 |
| это можно обойти. для начала покажи что такое ExecuteBox. я дам пример для этого. придется сделать событие, подписаться на него. и в обработчике менять ExecuteBox через Invoke |
| Автор: BoomeR 28.8.2007, 14:16 | ||
Собственно вот |
| Автор: SpaceSpace 28.8.2007, 14:29 | ||||||
| в принципе мне нужно знать только тип, хотя можно было и обойтись. можно немного модифить код. во превых, поместим в отдельный метод , который обращается к ресурсу в другом потоке. обжект параметр - результат trans.StandardOutput.ReadLine()
делаеш метод, в котором запускаеш процесс.
этот метод вызываеш асинхронно - в новом потоке.
ну если заработает, ставь плюс, не стесняйся |
| Автор: BoomeR 28.8.2007, 14:40 |
| SpaceSpace, Заработало, спасибо, но к сожалению плюсов пока давать не могу |
| Автор: SpaceSpace 28.8.2007, 14:45 |
| ну... без плюса, значит без плюса. не плюсом единым жив программер |