如何知道代码是在ui线程还是工作线程上运行(MFC Visual C++)

Jav*_*dro 5 user-interface mfc multithreading visual-c++

我有一个从应用程序中的不同线程调用的函数.我需要知道执行代码的线程是主线程(ui线程)还是工作线程.

有什么建议吗?

谢谢.

Shi*_*C G 13

如果您使用的是MFC应用程序,请使用以下代码.

if(GetCurrentThreadId() == AfxGetApp()->m_nThreadID)
{
    //Main Thread
}
else
{
    //Not Main Thread
}
Run Code Online (Sandbox Code Playgroud)


ral*_*nja 5

使用GetCurrentThread()GetCurrentTreadId()并将其与主线程的已知HANDLE或id进行比较.

不能有多个UI线程吗?

当然可以,但只有一个主要的 ui线程.

好.但是,有没有办法从这段代码中知道主线程的HANDLE或ID?我的意思是像GetMainThread或GetMainThreadID.我不想修改应用程序的其他部分(如果可能).顺便说一句,谢谢你的回答.

对不起,我出去吃午饭,你已经得到了答案.但无论如何也不妨回复.GetCurrentThreadId()当然可以在执行主ui线程时使用,并缓存以供以后比较.在执行应用程序的某个地方,只有一个线程,例如在创建任何其他线程之前的WinMain()中.

干杯!