<span class="synType" style="color:#3ec63e;">struct</span> T_thread_proc : TCppInterfacedObject<TProc>{
TNotifyEvent f_ev_;
<span class="synType" style="color:#3ec63e;">struct</span> T_sync_proc : TCppInterfacedObject<TThreadProcedure>{
TNotifyEvent f_ev_;
T_sync_proc(TNotifyEvent& ev2){ f_ev_ = ev2; }
<span class="synType" style="color:#3ec63e;">virtual</span> <span class="synType" style="color:#3ec63e;">void</span> __fastcall Invoke() {
<span class="synComment" style="color:#4f80e5;">//Inside Synchronize.</span>
f_ev_(<span class="synConstant" style="color:#ff6666;">NULL</span>); <span class="synComment" style="color:#4f80e5;">//Execute "TNotifyEvent".</span>
}
};
T_thread_proc(TNotifyEvent ev1){f_ev_ = ev1; }
<span class="synType" style="color:#3ec63e;">virtual</span> <span class="synType" style="color:#3ec63e;">void</span> __fastcall Invoke() {
<span class="synComment" style="color:#4f80e5;">//Write thread execution code here.</span>
Sleep(<span class="synConstant" style="color:#ff6666;">3000</span>); <span class="synComment" style="color:#4f80e5;">//example</span>
<span class="synComment" style="color:#4f80e5;">//Finally call Synchronize.</span>
TThread::Synchronize(
TThread::CurrentThread,_di_TThreadProcedure(<span class="synStatement" style="color:#d88a17;">new</span> T_sync_proc(f_ev_)));
}
};