Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // -= TThreadEx sample =-
- //
- // See also: http://www.eurekalog.com/help/eurekalog/multithreading_tthreadex.php
- uses
- EBase;
- type
- TMyThread = class(TThreadEx)
- protected
- procedure Execute; override;
- end;
- procedure TMyThread.Execute;
- begin
- inherited; // <- this is important
- // ... actual thread's code goes there
- end;
- // ...
- Thread := TMyThread.Create('My Thread, FileName=' + FileName);
- // or
- Thread := TMyThread.Create(False { <- suspended? }, 'My Thread, FileName=' + FileName);
- //
- // -= TThread sample =-
- //
- uses
- Classes,
- EThreadsManager;
- type
- TMyThread = class(TThread)
- private
- FFN: String;
- protected
- procedure Execute; override;
- public
- proeprty FileName: String read FFN write FFN;
- end;
- procedure TMyThread.Execute;
- begin
- inherited;
- NameThread('My Thread, FileName=' + FileName);
- // ... actual thread's code goes there
- end;
- //
- // -= BeginThreadEx sample =-
- //
- // See also: http://www.eurekalog.com/help/eurekalog/multithreading_beginthreadex.php
- {$IFDEF EUREKALOG}
- uses
- EBase;
- {$ENDIF}
- type
- PThreadArguments = ^TThreadArguments;
- TThreadArguments = record
- FileName: String;
- // ... any other arguments
- end;
- function MyThreadProc(Parameter: Pointer): Integer;
- var
- Args: TThreadArguments;
- begin
- Args := PThreadArguments(Parameter)^;
- Dispose(PThreadArguments(Parameter));
- // ... actual thread's code goes there
- end;
- ...
- var
- Args: PThreadArguments;
- TID: Cardinal;
- TH: THandle;
- begin
- Args := AllocMem(SizeOf(TThreadArguments));
- Args.FileName := Edit1.Text;
- TH := {$IFDEF EUREKALOG}BeginThreadEx{$ELSE}BeginThread{$ENDIF}
- (nil, 0, MyThreadProc, Args, 0, TID
- {$IFDEF EUREKALOG}, 'FileName=' + Args.FileName{$ENDIF});
- if TH = 0 then
- Dispose(Args)
- else
- CloseHandle(TH);
- end;
- //
- // -= BeginThread sample =-
- //
- uses
- EThreadsManager;
- type
- PThreadArguments = ^TThreadArguments;
- TThreadArguments = record
- FileName: String;
- // ... any other arguments
- end;
- function MyThreadProc(Parameter: Pointer): Integer;
- var
- Args: TThreadArguments;
- begin
- Args := PThreadArguments(Parameter)^;
- Dispose(PThreadArguments(Parameter));
- NameThread('FileName=' + Args.FileName);
- // ... actual thread's code goes there
- end;
- ...
- var
- Args: PThreadArguments;
- TID: Cardinal;
- TH: THandle;
- begin
- Args := AllocMem(SizeOf(TThreadArguments));
- Args.FileName := Edit1.Text;
- TH := BeginThread(nil, 0, MyThreadProc, Args, 0, TID);
- if TH = 0 then
- Dispose(Args)
- else
- CloseHandle(TH);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement