「@」アドレス演算子を使用して、変数のアドレスを BeginThread() に渡します。次に例を示します。
var
ThreadDone: Boolean;
ThreadId: LongWord;
ThreadHandle: Integer;
function ThreadFunc(PThreadDone: PBoolean): Integer;
begin
...
PThreadDone^ := True;
Result := 0;
end;
...
ThreadHandle := BeginThread(nil, 0, @ThreadFunc, @ThreadDone, 0, ThreadId);
そうは言っても、別の変数を使用せずにスレッドが完了したかどうかをメインスレッドが確認する別の方法は、BeginThread() によって返されたスレッドハンドルを WaitForSingleObject() に渡し、それが WAIT_OBJECT_0 を返すかどうかを確認することです。
var
ThreadId: LongWord;
ThreadHandle: Integer;
function ThreadFunc(Parameter: Pointer): Integer;
begin
...
Result := 0;
end;
...
ThreadHandle := BeginThread(nil, 0, @ThreadFunc, nil, 0, ThreadId);
...
if WaitForSingleObject(THandle(ThreadHandle), 0) = WAIT_OBJECT_0 then
finished...
else
still running...