Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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]

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



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

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

Наверх





Память: 0.45 MB
Время: 0.005 c
1-82
boa
2002-03-19 06:54
2002.04.01
Как сделать, чтобы курсор постоянно отображался в TEdit, TMemo


14-295
UGH|B1ADE
2002-02-18 18:56
2002.04.01
Плиз поможите !


3-3
andyfirst
2002-03-05 14:44
2002.04.01
Ошибка в запросе


3-13
Bura
2002-03-05 17:50
2002.04.01
Select в IB


7-323
B1ADE
2001-12-25 00:46
2002.04.01
КАК Включить и ВЫКЛЮЧИТЬ КЛАВУ !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский