none
Запуск формы отдельным потоком RRS feed

  • Вопрос

  • Добрый вечер, столкнулся с проблемой запуска формы. У меня есть класс который выполняет бесконечный цикл приема сообщений , в результате чего он выделен в отдельном потоке. Пытаюсь в методах класса создать вторую форму через метод Show(), но так как идет бесконечный цикл все это дело благополучно виснет.Думаю надо запускать в отдельном потоке форму,но к сожалению не выходит(((. Пишу на VS08 C++
    • Перемещено Abolmasov Dmitry 22 апреля 2011 г. 11:41 (От:Работа в среде Visual Studio)
    11 апреля 2011 г. 18:00

Ответы

  • Я имел ввиду немного другое. У вас щас так: есть основной поток, в котором вы создаете второй поток. Во втором потоке у вас создается объект класса и вызывается метод с бесконечным циклом. На этом дальнейшая работа потока 2 завершается, он всегда будет ждать этот цикл. И дальнейшее взаимодействие с объектом класса (вызов новой формы) не удастся.

    Я предложил вам создавать новый поток внутри метода класса и перенести бесконечный цикл в этот новый поток. Таким образом этот метод создаст новый поток, запустит его и вернет управление основному потоку. И вы сможете дальше использовать объект класса для вызова формы.

     


    Для связи [mail]
    • Помечено в качестве ответа Shutnic 13 апреля 2011 г. 17:22
    13 апреля 2011 г. 8:08

Все ответы

  • У вас вся работа с классом идет в другом потоке? Выделите в другой поток только блокирующий цикл приема сообщений. Тогда метод открытия формы будет выполнятся нормально.


    Для связи [mail]
    12 апреля 2011 г. 11:28
  • Да, работа с классом идет в отдельном потоке.К сожалению прием сообщений мне необходим и блокировать я его не могу.От него формируются события в новой форме.
    12 апреля 2011 г. 17:25
  • Я имел ввиду немного другое. У вас щас так: есть основной поток, в котором вы создаете второй поток. Во втором потоке у вас создается объект класса и вызывается метод с бесконечным циклом. На этом дальнейшая работа потока 2 завершается, он всегда будет ждать этот цикл. И дальнейшее взаимодействие с объектом класса (вызов новой формы) не удастся.

    Я предложил вам создавать новый поток внутри метода класса и перенести бесконечный цикл в этот новый поток. Таким образом этот метод создаст новый поток, запустит его и вернет управление основному потоку. И вы сможете дальше использовать объект класса для вызова формы.

     


    Для связи [mail]
    • Помечено в качестве ответа Shutnic 13 апреля 2011 г. 17:22
    13 апреля 2011 г. 8:08
  • Посмотрите сюда на 2-й странице 48 пост, может быть поможет. http://www.gotdotnet.ru/forums/2/129771/page-2/
    14 апреля 2011 г. 4:34