当前位置:  开发笔记 > 开发工具 > 正文

获取当前正在执行的线程的TThread对象?

如何解决《获取当前正在执行的线程的TThread对象?》经验,为你挑选了2个好方法。

我想要一个像GetCurrentThread这样的函数,它返回当前正在执行的线程的TThread对象.我知道有一个Win32 API调用GetCurrentThread,但它返回线程Id.如果有可能从该ID获得TThread对象,那也没关系.



1> Hugh Allen..:

从您自己的答案来看,似乎您可能只想"确定是否在主线程中运行",在这种情况下您可以使用

if Windows.GetCurrentThreadId() = System.MainThreadID then
// ...

虽然如果它是由工作线程加载的,但这不适用于使用Delphi创建的DLL.



2> Barry Kelly..:

最新版本的Delphi,Delphi 2009,在TThread类上有一个CurrentThread类属性.

如果它是本机线程,这将返回正确的Delphi线程对象.如果线程是"外来"线程,即使用某种其他机制或从第三方线程的回调创建,那么它将在线程句柄周围创建一个包装线程.


@Roddy和未来的读者:这是在2009年修补了补丁并在2010年版本中得到修复.
推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有