|
|
|
| auThread component.
|
| procedure SynchronizeEx(Method: TNotifyEvent; Params: Pointer);
|
| The SynchronizeEx method executes a method call within the main VCL thread. Synchronize causes the call specified by Method to be executed using the main VCL thread, thereby avoiding multi-thread conflicts. If you are unsure whether a method call is thread-safe, call it from within the main VCL thread by passing it to the Synchronize or SynchronizeEx methods.
|
|
|
| Internally, the SynchronizeEx works exactly like Synchronize, but allows to tramsmit additional parameters (Params) to the synchronized method. See example below.
|
|
|
| type
|
| TForm1 = class(TForm)
|
| auThread1: TauThread;
|
| procedure auThread1Execute(Sender: TObject);
|
| private
|
| procedure SyncCall(Sender: TObject);
|
| public
|
| end;
|
|
|
| implementation
|
|
|
| type
|
| PMyData = ^TMyData;
|
| TMyData = record
|
| I: Integer;
|
| S: String;
|
| end;
|
|
|
| procedure TForm1.auThread1Execute(Sender: TObject);
|
| var
|
| Data: TMyData;
|
| begin
|
| // -- snip --
|
| with Data do
|
| begin
|
| S := 'some text';
|
| I := Random(100); // some number
|
| end;
|
| auThread1.SynchronizeEx(SyncCall, @Data);
|
| // -- snip --
|
| end;
|
|
|
| procedure TForm1.SyncCall(Sender: TObject);
|
| begin
|
| with PMyData(Sender)^ do
|
| begin
|
| // Here you getting access to the parameters
|
| // described in TMyData structure. Example:
|
| Application.MessageBox(PChar(S), PChar(IntToStr(I)), MB_OK);
|
| end;
|
| end;
|
| Synchronize, Execute, Suspend, Resume and Terminate methods.
|