Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Не совсем уверен в своем коде   Найти похожие ветки 

 
Style ©   (2004-04-28 09:48) [0]

Создаю системное модальное сообщение MB_SYSTEMMODAL и у меня тормозится вся нить, поэтому решил запихать MessageBox в отдельный TThread

type
 TMsgThread = class(TThread)
 private
   FCaption, FText: string;
   FFlags: integer;
 protected
   procedure Execute; override;
 public
   constructor Create(Text,Caption: string; Flags: integer);
 end;

implementation

{ TMsgThread }

constructor TMsgThread.Create(Text,Caption: string; Flags: integer);
begin
 inherited Create(false);
 FCaption := Caption;
 FText := Text;
 FFlags := Flags;
end;

procedure TMsgThread.Execute;
begin
 MessageBox(0,pchar(FText),pchar(FCaption),FFlags);
 inherited Destroy;
end;


И показываю теперь сообщение вот так:

TMsgThread.Create(
     "Получено сообщение от " + From + ": "#13#10 + Text,"Внимание!",MB_OK or MB_SYSTEMMODAL or     MB_ICONINFORMATION);


т.е. реально я пользуюсь только классовым методом.
Ни чем мне не грозит такая конструкция?


 
pasha_golub ©   (2004-04-28 09:58) [1]

procedure TMsgThread.Execute;
begin
MessageBox(0,pchar(FText),pchar(FCaption),FFlags);
inherited Destroy;
end;

А с каких это пор деструктор начали отсюда вызывать?


 
pasha_golub ©   (2004-04-28 10:00) [2]

Удалено модератором
Примечание: Дубль


 
Style ©   (2004-04-28 10:04) [3]

>> inherited Destroy;
А мне нить больше и дальше не нужна..

Вот собственно и интересно все ли корректно или могут быть проблеммы, после такого вызова?


 
clickmaker ©   (2004-04-28 10:07) [4]


> Style ©   (28.04.04 10:04) [3]
> >> inherited Destroy;
> А мне нить больше и дальше не нужна..

А зачем вообще явно деструктор вызывать? Поток и так умрет после выхода из Execute


 
pasha_golub ©   (2004-04-28 10:08) [5]

clickmaker ©   (28.04.04 10:07) [4]
Вот и я про тоже, достаточно FreeOnTerminate := True;


 
Style ©   (2004-04-28 10:10) [6]

>>А зачем вообще явно деструктор вызывать? Поток и так умрет
>>после выхода из Execute


т.е. его вообще можно убрать..

Спасибо..

А если я его явно указал, от этого хуже не будет???


 
Игорь Шевченко ©   (2004-04-28 11:27) [7]


> А если я его явно указал, от этого хуже не будет???


Сура 18 Корана гласит: не вызывайте деструкторы явно.


 
Style ©   (2004-04-28 11:29) [8]

Всем спасибо
FreeOnTerminate := True;

сделал...



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

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

Наверх




Память: 0.48 MB
Время: 0.054 c
8-1077878079
my4ga
2004-02-27 13:34
2004.05.16
музыка


14-1082646601
Валентин Сушняк
2004-04-22 19:10
2004.05.16
Посоветуйте компонент или научите!


14-1082809313
Yar-Com
2004-04-24 16:21
2004.05.16
расстояние между скрещивающимися прямыми


1-1083310166
bon
2004-04-30 11:29
2004.05.16
PoolBar


3-1082466694
Галинка
2004-04-20 17:11
2004.05.16
Open Dialog и базы MS Access.....