Hi,
ich schreibe an einer
Unit, die das TThread Object für
nonVCL Programme implementiert. Leider stoße ich schon ziemlich am anfang auf ein Problem:
Delphi-Quellcode:
unit Threads;
interface
uses
Windows;
type
TThread =
class(TObject)
private
FThreadID: DWORD;
FThreadHandle: THandle;
function ThreadCallback(Data: Pointer): LongInt;
stdcall;
public
constructor Create(CreateSuspended: boolean);
destructor Destroy;
override;
protected
procedure Execute;
virtual;
end;
implementation
constructor TThread.Create(CreateSuspended: boolean);
begin
if CreateSuspended
then
begin
FThreadHandle := CreateThread(
nil, 0, TFNThreadStartRoutine(@ThreadCallback), CREATE_SUSPENDED, 0, ThreadID);
end
else
begin
FThreadHandle := CreateThread(
nil, 0, TFNThreadStartRoutine(@ThreadCallback),
nil, 0, ThreadID);
end;
end;
destructor TThread.Destroy;
begin
//
end;
Und zwar wird mir "TFNThreadStartRoutine(@ThreadCallback)" angezeigt mit der Meldung "Variable" erforderlich .. ich vermute mal ThreadCallback darf keine Funktion eines Objektes sein ..
Nehme ich die Callback Funktion nun aber aus dem Object raus und deklariere sie einfach im implementation Teil, woher soll ich dann wissen von welchem TThread Object ich die Execute Methode aufrufen soll?
Hat jemand eine Lösung für dieses Problem?