-
У меня есть поток. Описанный в новом модуле.
В главной форме я объявляю переменную потока и создаю поток.
Затем из главной формы я запускаю hreadTCP.SendConnect;
где SendConnect - это процедура, осуществляющая подключение
И вот если нет соединения, то все приложение висит.
Почему???
Я ведь делаю подключение в отдельном потоке. Поток должен висеть... -
Сергей М. © (28.11.11 11:47) [1]
> Я ведь делаю подключение в отдельном потоке
Значит не в отдельном, а в основном. -
В основном я только объявил переменную:
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]твой вызов идет в основном.
что ты и наблюдаешь по зависонам. -
Как тогда правильно делать вызов из основного?
-
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]
А не надо из основного, это не совсем правильно. -
> xss22 © (28.11.11 11:59) [4]
> Как тогда правильно делать вызов из основного?
В основном потоке используй неблокирующие асинхронные сокеты на сообщениях Windows например. Или переноси в доп поток все, включая создание сокета и коннект. Основной поток можно уведомлять о событиях в дополнительном опять же с помощью сообщений.