Вниз
Скачать: CL | DM;

Возврат результата   Найти похожие ветки 

← →
Piter ©   (2004-02-04 00:42) [0]

Существует форма, при нажатии на кнопку она должна загрузить в свой ListBox некие данные из интернета.

Существует экземпляр класса TSock. У него есть метод, который инициализирует запрос данных из интернета. Для этого создается новый поток в котором происходит соединение по TCP/IP с нужным хостом, запрос данных и их получение.

Вопрос - каким образом вернуть данные в форму?

Я предпологаю сделать так. Когда форма вызывает метод TMySock для загрузки данных, она передает указатель на свой метод, который нужно вызвать когда данные будут получены.
То есть, поток, созданный TSock отработает и передаст результат, вызвав метод формы.
Я правильно думаю, это оптимальный способ?

Но есть проблема - ко времени получения данных формы уже может не существовать. Как это определить?


← →
Rouse_ ©   (2004-02-04 01:00) [1]

Запускаем в отдельном потоке. Поток должен отвечать за обновление, и также проверять наличие формы... Желательно проверять в процессе получения, ибо если наличие формы критично - нужно терминировать поток, ибо траффик...


← →
Piter ©   (2004-02-04 01:07) [2]

Rouse_ © (04.02.04 01:00) [1]

хм, по-моему ты не понял

Запускаем в отдельном потоке

ежу понятно, я ведь так и написал
>Для этого создается новый поток в котором происходит соединение по TCP/IP...

и также проверять наличие формы

блин, Rouse - тебе точно спать пора :) Вторичный вопрос в том и был - каким образом проверять наличие формы?


← →
Кщд   (2004-02-04 06:01) [3]

Assigned


← →
Piter ©   (2004-02-04 13:56) [4]

Кщд (04.02.04 06:01) [3]
чего Assigned? Ссылка на экземпляр формы, конечно, не будет nil, с чего бы это...


← →
alex_*** ©   (2004-02-04 14:11) [5]

Если форма может задать свой обработчик, то она может его и обнулить на своем destroy


← →
Piter ©   (2004-02-04 14:38) [6]

Ничего не понимаю. Причем здесь обработчик? Форма ПЕРЕДАЕТ указатель на свой метод! И она уже не может его изменить никак.
А ко времени вызова этого метода формы может не существовать, значит и указатель на метод недействителен.


← →
VAleksey ©   (2004-02-04 14:51) [7]


> А ко времени вызова этого метода формы может не существовать,
> значит и указатель на метод недействителен.

Это почему еще?


← →
AKul ©   (2004-02-04 14:54) [8]


> Piter © (04.02.04 14:38) [6]
> значит и указатель на метод недействителен.


Почему? Указатель на метод объекта будет действителен, а вот указатель на сам объект - нет.

Ты же писал:

> Когда форма вызывает метод TMySock для загрузки данных,
> она передает указатель на свой метод, который нужно вызвать
> когда данные будут получены.

Вот в OnDestroy формы и пропиши отмену вызова этого метода, например, вызвав для этого специальный метод TMySock, или установив где-нибудь какой-нибудь флаг и т.д.


← →
alex_*** ©   (2004-02-04 14:56) [9]

а если указатель на метод вынести из параметров метода у TSock и сделать поле в public?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.017 c
11-38763
BelchonokH
2003-06-01 18:48
2004.02.13
Глюк в TabControl


1-38920
ss300
2004-02-04 13:21
2004.02.13
проверка на цифру


1-38770
_BasiL_
2004-02-03 14:24
2004.02.13
Console & ReadKey


7-39117
Евгений
2003-11-26 10:45
2004.02.13
Многопоточность MDI приложения


14-39000
Тимохов
2004-01-22 16:45
2004.02.13
Про горячие клавиши редактора Дельфи




   Наверх