
02.06.2011, 08:43
|
 |
Let Me Show You
|
|
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
|
|
ну не проблема:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
PMethodLavrovoi = ^MethodLavrovoi;
MethodLavrovoi = record
h: THandle;
n: Integer;
i: Integer;
s: ShortString;
d: TDateTime;
end;
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WMUSER(var Msg: TMessage); message WM_USER+$1001;
end;
var
Form1: TForm1;
FHandle: THandle;
FThreadID: THandle;
implementation
{$R *.dfm}
function ThreadProc(Parameter: PMethodLavrovoi): Integer;
begin
Sleep(Parameter^.i);
Parameter^.s:='MethodLavrovoi='+IntToStr(Parameter^.i);
Parameter^.d:=Parameter^.d-Parameter^.i;
PostMessage(Parameter^.h, WM_USER+$1001, WPARAM(Parameter), 0);
Result:=0;
EndThread(Result);
end;
{ TForm1 }
procedure TForm1.WMUSER(var Msg: TMessage);
var
p: PMethodLavrovoi;
begin
Msg.Result:=0;
p:=PMethodLavrovoi(Msg.WParam);
Memo1.Lines.Add(IntToStr(p^.n)+' '+p^.s+' '+DateTimeToStr(p^.d));
FreeMemory(p);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
p: PMethodLavrovoi;
begin
for i:=1 to 9 do
begin
p:=GetMemory(SizeOf(MethodLavrovoi));
p^.h:=Handle;
p^.n:=i;
p^.i:=(Random(9)+1)*10;
p^.s:='';
p^.d:=Now;
FHandle:=BeginThread(nil, 0, @ThreadProc, p, 0, FThreadID);
end;
end;
initialization
Randomize;
end.
CloseHandle(FHandle); для всех потоков сам куда-нить воткнешь, я забыл про них совсем)))
__________________
Пишу программы за еду.
__________________
|