Конференция "Сети" » Сокет в отдельном потоке и подвешивание всего приложения.
 
  • xss22 © (28.11.11 11:34) [0]
    У меня есть поток. Описанный в новом модуле.

    В главной форме я объявляю переменную потока и создаю поток.
    Затем из главной формы я запускаю hreadTCP.SendConnect;
    где SendConnect - это процедура, осуществляющая подключение

    И вот если нет соединения, то все приложение висит.
    Почему???
    Я ведь делаю подключение в отдельном потоке. Поток должен висеть...
  • Сергей М. © (28.11.11 11:47) [1]

    > Я ведь делаю подключение в отдельном потоке


    Значит не в отдельном, а в основном.
  • xss22 © (28.11.11 11:56) [2]
    В основном я только объявил переменную:
    hreadTCP: ThreadTCP;

    затем в procedure Tmain_form.FormCreate(Sender: TObject);
    создал поток:

     hreadTCP:=ThreadTCP.Create(true);
     hreadTCP.Priority:=tpNormal;
     hreadTCP.FreeOnTerminate:=false;



    И потом из главной формы делаю подключение через поток:

    hreadTCP.ConnectTCP(hostBD, portBD);

  • Медвежонок Пятачок © (28.11.11 11:57) [3]
    твой вызов идет в основном.
    что ты и наблюдаешь по зависонам.
  • xss22 © (28.11.11 11:59) [4]
    Как тогда правильно делать вызов из основного?
  • Anatoly Podgoretsky © (28.11.11 12:03) [5]
    > xss22  (28.11.2011 11:56:02)  [2]

    Так в основном же
  • Сергей М. © (28.11.11 12:06) [6]

    > Как тогда правильно делать вызов из основного?


    Никак не правильно.
    Вызов должен идти именно из дополнительного, а именно из тела метода ThreadTCP.Execute
  • Anatoly Podgoretsky © (28.11.11 12:09) [7]
    > xss22  (28.11.2011 11:59:04)  [4]

    А не надо из основного, это не совсем правильно.
  • DVM © (28.11.11 18:17) [8]

    > xss22 ©   (28.11.11 11:59) [4]
    > Как тогда правильно делать вызов из основного?

    В основном потоке используй неблокирующие асинхронные сокеты на сообщениях Windows например. Или переноси в доп поток все, включая создание сокета и коннект. Основной поток можно уведомлять о событиях в дополнительном опять же с помощью сообщений.
 
Конференция "Сети" » Сокет в отдельном потоке и подвешивание всего приложения.
Есть новые Нет новых   [134436   +21][b:0][p:0.001]