Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];

Вниз

Поток в dll   Найти похожие ветки 

 
alexnmsk   (2008-02-13 11:24) [0]

Здравствуйте, уважаемые мастера.
Имеется dll, в которой экспортируемая функция создает форму (хранится в этой же dll), и вызывает ее ShowModal. В этой форме нужно выполнять определенные действия в отдельном потоке. Для примера вот код в юните потока:

procedure TMyThread.ClearList;
begin
EOBJ.Label1.Caption:="1111";
EOBJ.Label1.Caption:="1111";
end;

procedure TMyThread.ClearList2;
begin
EOBJ.Label1.Caption:="2222";
EOBJ.Label1.Caption:="2222";
end;

procedure TMyThread.Execute;
begin
   Synchronize(ClearList);
   Synchronize(ClearList2);
end;

в форме по нажатию кнопки, пытаюсь создать поток:

procedure TEOBJ.Button1Click(Sender: TObject);
var
 t: ThRefreshPictureList;
begin
 t := ThRefreshPictureList.Create(False);
end;

При выполнении никаких изменений в Label1 и Label2 не происходит. Поток запускается, но Synchronize(ClearList2) даже не выполняет. ???


 
alexnmsk   (2008-02-13 11:30) [1]

Опечатался. По нажатию кнопки:

procedure TEOBJ.Button1Click(Sender: TObject);
var
t: TMyThread;
begin
t := TMyThread.Create(False);
end;


 
clickmaker ©   (2008-02-13 11:33) [2]


> EOBJ.Label1.Caption:="2222";
> EOBJ.Label1.Caption:="2222";

а с первого раза не присваивается? )


 
alexnmsk   (2008-02-13 11:35) [3]

тоже опечатка
EOBJ.Label1.Caption:="1111";
EOBJ.Label2.Caption:="1111";


 
clickmaker ©   (2008-02-13 11:43) [4]


> но Synchronize(ClearList2) даже не выполняет

в отладчике не заходит в ClearList2?


 
alexnmsk   (2008-02-13 11:44) [5]

Я так понимаю, что дело во взаимодействии со свойствами объектов, потому что

procedure ThRefreshPictureList.ClearList;
begin
showmessage("1");
showmessage("2");
EOBJ.Label1.Caption:="1111";
showmessage("3");
EOBJ.Label2.Caption:="1111";
end;

showmessage("3") - даже не вызывается


 
Сергей М. ©   (2008-02-13 11:46) [6]

Объекты Application у вызывающего и вызываемого модулей разные, потому и не работает Synchronize()

Уж сколько раз твердили миру - Делфи-формы следует хранить и создавать в bpl, а не в dll !


 
clickmaker ©   (2008-02-13 11:57) [7]


> [5] alexnmsk   (13.02.08 11:44)

не лень шоумесседж-то столько раз писать?
давно бы отладчиком прошелся...


 
Anatoly Podgoretsky ©   (2008-02-13 12:14) [8]

> alexnmsk  (13.02.2008 11:24:00)  [0]

Наш клиент и верный последователь Архангельского.


 
Leonid Troyanovsky ©   (2008-02-13 13:25) [9]


> Anatoly Podgoretsky ©   (13.02.08 12:14) [8]

> верный последователь Архангельского.

И продолжатель :)
Не только overSynchronize и форма в длл, но и поток туда ж.

--
Regards, LVT.


 
DiamondShark ©   (2008-02-13 18:01) [10]


> Объекты Application у вызывающего и вызываемого модулей
> разные, потому и не работает Synchronize()

Это что ж такого с синхронайзом сотворили в семёрке?!

В пятой было всё просто, как редиска:

procedure TThread.Synchronize(Method: TThreadMethod);
begin
 FSynchronizeException := nil;
 FMethod := Method;
 SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self));
 if Assigned(FSynchronizeException) then raise FSynchronizeException;
end;

Никакой зависимости от Application тут не наблюдается.



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

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

Наверх





Память: 0.47 MB
Время: 0.044 c
15-1201787088
saNat
2008-01-31 16:44
2008.03.09
Подскажите, пожалуйста, м... компонент для отображения формул


2-1202814231
Nik77
2008-02-12 14:03
2008.03.09
Работа с таблицами Paradox


3-1192787895
ocean
2007-10-19 13:58
2008.03.09
Подскажите конструкцию SQL


15-1202008649
ketmar
2008-02-03 06:17
2008.03.09
по php и APC, XCache и eAccelerator


2-1202807561
SergeR
2008-02-12 12:12
2008.03.09
Получить текущее время комьпютера в сети





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский