我有一個函數正在從應用程序中的不同線程中調用。 我需要知道執行代碼的線程是主線程(ui線程)還是工作線程。如何知道代碼是否在ui線程或工作線程上運行(MFC Visual C++)
有什麼建議嗎?
謝謝。
我有一個函數正在從應用程序中的不同線程中調用。 我需要知道執行代碼的線程是主線程(ui線程)還是工作線程。如何知道代碼是否在ui線程或工作線程上運行(MFC Visual C++)
有什麼建議嗎?
謝謝。
如果您使用MFC應用程序,請使用以下代碼。
if(GetCurrentThreadId() == AfxGetApp()->m_nThreadID)
{
//Main Thread
}
else
{
//Not Main Thread
}
使用GetCurrentThread()或GetCurrentTreadId(),並將其與主線程的已知手柄或ID進行比較。
不能有多個UI線程?
當然可以,但只有一個主要 UI線程。
好的。但是,有沒有辦法知道 這個代碼中的主線程的句柄或ID?我的意思是像 GetMainThread或GetMainThreadID。 I 不想修改應用程序的其他部分 (如果可能的話)。順便說一句, 感謝您的回答。
對不起,我出去吃午飯,你已經得到了你的答案。但不管怎樣,不妨回覆。 GetCurrentThreadId()當然可以在執行主UI線程期間使用,並且可以緩存以供以後比較。在執行應用程序的某個地方,只會有一個線程,例如在WinMain()之前創建任何其他線程。
乾杯!
不能有多個UI線程嗎? – Naveen 2009-05-27 08:47:32
AfxGetApp() - > GetMainWnd()
將返回AfxGetMainWnd()將返回如果從主線程調用同樣的事情。
[如何獲取進程的主線程標識(由其ID標識)?](http://stackoverflow.com/questions/15597066/how-to-get-the-main-thread- id-of-process-known-by-its-id) – TarmoPikaro 2016-08-25 09:37:51