我想要一个像GetCurrentThread这样的函数,它返回当前正在执行的线程的TThread对象.我知道有一个Win32 API调用GetCurrentThread,但它返回线程Id.如果有可能从该ID获得TThread对象,那也没关系.
从您自己的答案来看,似乎您可能只想"确定是否在主线程中运行",在这种情况下您可以使用
if Windows.GetCurrentThreadId() = System.MainThreadID then // ...
虽然如果它是由工作线程加载的,但这不适用于使用Delphi创建的DLL.
最新版本的Delphi,Delphi 2009,在TThread类上有一个CurrentThread类属性.
如果它是本机线程,这将返回正确的Delphi线程对象.如果线程是"外来"线程,即使用某种其他机制或从第三方线程的回调创建,那么它将在线程句柄周围创建一个包装线程.