Главная страница
    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.46 MB
Время: 0.047 c
15-1202111721
Valentina_HR
2008-02-04 10:55
2008.03.09
поомгите найти программиста Delphi!!! (Санкт-Петербург)


11-1184499935
Lex1
2007-07-15 15:45
2008.03.09
KOL поддерживает регулярные выражения?


2-1202803897
abhtr
2008-02-12 11:11
2008.03.09
2 TMainMenu на одной форме?


15-1202120566
asdfa
2008-02-04 13:22
2008.03.09
не могу понять как запускается файл


2-1202739868
patrick1968
2008-02-11 17:24
2008.03.09
Проблема с написанием Service а





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