Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: 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 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
14-39056
lipskiy
2004-01-25 15:30
2004.02.13
Подскажите компонент


3-38741
Oleg_em
2004-01-21 13:59
2004.02.13
Активные пользователи в IB


8-38977
Gabriel
2003-10-12 22:51
2004.02.13
avi - dll


1-38836
den777
2004-02-02 18:41
2004.02.13
Вопрос по памяти при работе с дтнамическими массивами


3-38702
squirrel
2004-01-22 10:53
2004.02.13
Ошибка открытия данных в IB 5.1