Форум: "Основная";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];
ВнизВопрос по TThread Найти похожие ветки
← →
panov (2001-12-30 13:48) [16]Привожу пример работы:
Основная форма (там только одна кнопка - Button1):
unit ThrSample;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
uThread, StdCtrls;
const
WM_BASE = WM_USER;
WM_ENDTHREAD = WM_BASE+1;
type
TfThrSample = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure onWM_ENDTHREAD(var Message: TMessage); message WM_ENDTHREAD;
end;
var
fThrSample: TfThrSample;
implementation
{$R *.DFM}
procedure TfThrSample.onWM_ENDTHREAD(var Message: TMessage);
begin
if Message.wParam = 1 then TMyThread.Create(fThrSample.Handle,1);
end;
procedure TfThrSample.Button1Click(Sender: TObject);
begin
TMyThread.Create(fThrSample.Handle,1);
end;
end.
И определение потока:
unit uThread;
interface
uses
Classes,windows;
type
TMyThread = class(TThread)
private
FNumThread: Integer;
FHandleForm: Integer;
protected
procedure Execute; override;
public
constructor Create(const aHandleForm, aNumThread: Integer);
procedure DoUpdate;
end;
implementation
uses
ThrSample;
constructor TMyThread.Create(const aHandleForm,aNumThread: Integer);
begin
inherited Create(False);
FreeOnTerminate := True;
FNumThread := aNumThread;
FHandleForm := aHandleForm;
end;
procedure TMyThread.DoUpdate;
begin
PostMessage(FHandleForm,WM_ENDThread,FNumThread,0);
//этот код можно выполниить и в EXECUTE
end;
procedure TMyThread.Execute;
begin
// что-то делаем
Synchronize(DoUpdate);
end;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c