【发布时间】:2010-10-29 05:11:42
【问题描述】:
我有一个从应用程序中的不同线程调用的函数。 我需要知道执行代码的线程是主线程(ui线程)还是工作线程。
有什么建议吗?
谢谢。
【问题讨论】:
标签: multithreading visual-c++ mfc user-interface
我有一个从应用程序中的不同线程调用的函数。 我需要知道执行代码的线程是主线程(ui线程)还是工作线程。
有什么建议吗?
谢谢。
【问题讨论】:
标签: multithreading visual-c++ mfc user-interface
如果您使用的是 MFC 应用程序,请使用以下代码。
if(GetCurrentThreadId() == AfxGetApp()->m_nThreadID)
{
//Main Thread
}
else
{
//Not Main Thread
}
【讨论】:
使用 GetCurrentThread() 或 GetCurrentTreadId() 并将其与已知的 HANDLE 或主线程的 id 进行比较。
不能有多个 UI 线程吗?
当然可以,但只有一个 main ui 线程。
好的。但是,有没有办法知道 主线程的 HANDLE 或 ID 来自 这段代码?我的意思是 GetMainThread 或 GetMainThreadID。一世 不想修改其他部分 应用程序(如果可能)。顺便提一句, 谢谢你的回答。
对不起,我出去吃午饭了,你已经得到了答案。但还是不妨回复一下。 GetCurrentThreadId() 当然可以在你的主 ui 线程执行期间使用,并被缓存以供以后比较。在您的应用程序执行期间的某个地方,将只有一个线程,例如在创建任何其他线程之前在 WinMain() 中。
干杯!
【讨论】:
AfxGetApp()->GetMainWnd()
如果从主线程调用,将返回与 AfxGetMainWnd() 将返回的相同的内容。
【讨论】: