MsgBox-ы дочернего потока

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

cousloum
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 30.06.2010 (Ср) 12:39

MsgBox-ы дочернего потока

Сообщение cousloum » 31.07.2010 (Сб) 14:32

Делаю многопоточное приложение и столкнулся с некоторыми сложностями. В определенные моменты работы дочернего потока он показывает msgbox-ы с кнопками Да и Нет и зависимости от того какая кнопка будет нажата, поток продолжается или завершается. Проблема же заключается в том, что msgbox в дочернем потоке не блокируют интерфейс программы так как это делают msgbox-ы главного потока. Подскажите как проще и грамотнее сделать такую блокировку интерфейса

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: MsgBox-ы дочернего потока

Сообщение Viper » 31.07.2010 (Сб) 21:45

cousloum писал(а):Проблема же заключается в том, что msgbox в дочернем потоке не блокируют интерфейс программы так как это делают msgbox-ы главного потока.
Ему собственно и не положено блокировать интерфейс, ему положено блокировать тот поток, из которого он вызван.
Весь мир матрица, а мы в нем потоки байтов!

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: MsgBox-ы дочернего потока

Сообщение arvitaly » 01.08.2010 (Вс) 2:53

Код: Выделить всё
        void y()
        {

            ThreadMain.Suspend();
            MessageBox.Show("kjh");
            ThreadMain.Resume();
        }
        Thread ThreadMain = Thread.CurrentThread;
        private void button1_Click(object sender, EventArgs e)
        {

            Thread t = new Thread(y);
            t.Start();
        }

cousloum
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 30.06.2010 (Ср) 12:39

Re: MsgBox-ы дочернего потока

Сообщение cousloum » 01.08.2010 (Вс) 9:39

Спасибо за помощь!
Вымучил такое решение: вызываю в главном потоке делегат с параметрами (строка которую нужно отобразить, заголовок сообщения и его стиль) из дочернего потока через Invoke(), таким образом оба потока ждут нажатия Да или Нет. Пока вроде все работает как надо.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30

    TopList