例如,来自可执行文件或DLL中的CreateTimerQueueTimer回调提供的线程?具有与主线程相同的线程ID是很重要的.
procedure TMyMainClass.ExecuteMe(someparam: paramtype);
begin
{something}
end;
Run Code Online (Sandbox Code Playgroud)
和
procedure TimerCallback(pvContext: pointer; fTimerOrWaitFired: boolean); stdcall;
begin
{do what ?}
end;
Run Code Online (Sandbox Code Playgroud)
Final update:
所有这些东西(TThread.Synchronize,TThread.Queue,PostThreadMessage等)的作品通过消息.因此,请确保dll在等待回调时主机应用处理消息.
要在主线程中执行代码而不访问TThread实例,请调用类方法TThread.Synchronize或TThread.Queue.
如果您碰巧使用的是没有这些方法的旧Delphi编译器,那么SendMessage或者PostMessage使用用户定义的消息是最简单的解决方案.
| 归档时间: |
|
| 查看次数: |
2611 次 |
| 最近记录: |