Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Вниз

TThread 


lipskiy   (2002-03-20 20:32) [0]

Почему нельзя параметром Synchronize указать процедеру с параметрами? Это очень неудобно - нужно работать через глобальные переменные. Почему? Нельзя ли все таки сделать вызов с параметрами?



Юрий Зотов   (2002-03-20 20:44) [1]

Потому что так сделано. А глобальные переменные совершенно не обязательны. В хелпе есть пример.

procedure TMyThread.MyMethod;
begin
AnyMetod(AnyParamList); // Вот оно - любой список параметров
end;

procedure TMyThread.Execute;
begin
...
Synchronize(MyMethod);
...
end;



lipskiy   (2002-03-20 20:50) [2]

Кхм... Это понятно.
Но вот, в моем случае все выглядит примерно так.
В Execute выполняется довольно длинный неразветвленный и нециклический код. Просто последовательность операций. Между этими операциями мне нужно печатать результат на главную форму. Естественно, эти промежуточные результаты возникают только внутри Execute.
Так что делать в этом случае?



Набережных С.   (2002-03-20 21:31) [3]

Выделяй динамически память под структуру или переменные и указатель отсылай через SendMessage, PostMessage или Synchronize.
Другой вариант - буфер с синхронизацией. Есть и другие варианты, например COM.



vuk   (2002-03-20 21:48) [4]

Не знаю, кто как, но я бы пошел совсем другим путем. Правда, немного сложнее получается.
Все параметры, которые нужны форме для отображения результата упаковываются в структуру (запись или объект). Потом создается список (TThreadList), который служит "буфером" и в который поток складывает результаты своей работы. Также у потока есть Handle формы, которой он посылает сообщение сразу как только добавляется элемент в список. Форма же, получив сообщение, выбирает элементы из списка, отображает их и затем удаляет.



lipskiy   (2002-03-20 21:53) [5]

Черт, хорошо быть умным...
Не понимаю я этого всего... (пока)
Ну да ладно, спасибо и на том, буду разбираться.
Просто мой уровень ниже изложенных вами предложений.



Набережных С.   (2002-03-20 21:55) [6]


> vuk © (20.03.02 21:48)

"Другим путем" - в каком смысле?
См. > Другой вариант - буфер с синхронизацией



vuk   (2002-03-20 21:59) [7]

to Набережных С.:
>"Другим путем" - в каком смысле?
Звиняюсь, проглядел. :o(
Ну да хуже от этого никому не стало. :o)



Набережных С.   (2002-03-20 22:05) [8]

Я тоже извиняюсь - зря написал.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.028 c
1-233             Ольга                 2002-03-18 16:24  2002.04.01  
Outlook


3-61              SergikSoft            2002-03-06 12:54  2002.04.01  
Создание клиент-сервера в


3-56              Turalyon              2002-03-05 13:35  2002.04.01  
Триггер в IB6


1-162             Юрий Федоров          2002-03-22 09:42  2002.04.01  
парамерты ShellExecute для поиска файлов


14-304            Виктор55              2002-02-17 22:20  2002.04.01  
Быстродействие компьютера при обычном использовании