Implements a default OnExecute handler for TThread.Execute, while maintaining 
backward compatibility.

You can now do this:

  with TThread.Create(true) do begin
    OnExecute:[EMAIL PROTECTED];
    OnTerminate:[EMAIL PROTECTED];
    FreeOnTerminate:=true;
    Resume;
  end;

Signed-off-by: Al Boldi <[EMAIL PROTECTED]>
--

Tested on linux w/ fpc 2.0.2 .

--- tthread.bak.inc     2005-12-05 00:22:12.000000000 +0300
+++ tthread.inc 2006-11-07 10:05:20.000000000 +0300
@@ -301,6 +301,11 @@ begin
   WRITE_DEBUG('thread terminated');
 end;
 
+procedure TThread.Execute;
+begin
+  if Assigned(FOnExecute) then FOnExecute(self);
+end;
+
 procedure TThread.CallOnTerminate;
 begin
   // no need to check if FOnTerminate <> nil, because
--- classesh.bak.inc    2005-12-05 00:22:39.000000000 +0300
+++ classesh.inc        2006-11-07 10:04:39.000000000 +0300
@@ -1211,6 +1211,7 @@ type
     FFreeOnTerminate: Boolean;
     FFinished: Boolean;
     FReturnValue: Integer;
+    FOnExecute: TNotifyEvent;
     FOnTerminate: TNotifyEvent;
     FMethod: TThreadMethod;
     FSynchronizeException: TObject;
@@ -1222,7 +1223,7 @@ type
   protected
     FThreadID: TThreadID; // someone might need it for pthread_* calls
     procedure DoTerminate; virtual;
-    procedure Execute; virtual; abstract;
+    procedure Execute; virtual; //abstract;
     procedure Synchronize(Method: TThreadMethod);
     property ReturnValue: Integer read FReturnValue write FReturnValue;
     property Terminated: Boolean read FTerminated;
@@ -1257,6 +1258,7 @@ type
     property Priority: TThreadPriority read GetPriority write SetPriority;
     property Suspended: Boolean read FSuspended write SetSuspended;
     property ThreadID: TThreadID read FThreadID;
+    property OnExecute: TNotifyEvent read FOnExecute write FOnExecute;
     property OnTerminate: TNotifyEvent read FOnTerminate write FOnTerminate;
     property FatalException: TObject read FFatalException;
   end;

_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to