2011-02-03 3 views
6

が、ユーモア私を...のVisual Studioのスレッドのウィンドウは、「メインスレッド」私はおそらく何かを明らかに行方不明です

それはデバッグで有用であると私はいつも私のアプリで重要なスレッドに名前を付けるのが好き/特定しない方法あなたがプログラムの起動時にThread.CurrentThread.Name経由でメインスレッドの名前を照会すると、nullが返ってきます。そのため、最初に起こるのは、メインスレッド(および他の関連スレッド)が素晴らしい意味を持っていることです将来の参照のための名前

今日まで、私は決して考えなかったが、Visual Studioのスレッドウィンドウを見ると(スレッド名が割り当てられる前に) edなど)では、特別なカテゴリ「Main Thread」と「Main Thread」(ただし実際のスレッド名ではありません)という擬似名が割り当てられています。

管理対象の観点から、.NETはアプリケーションのメインスレッド(少なくとも私が見ることができる)を識別する意味のあるものを公開しません。System.Threading.ThreadまたはSystem.Diagnostics.ProcessThread私はWindows Process and Thread Functionsのリストを見て、やはり何も明白ではない(おそらくOpenThread?)。

誰かがスレッドウィンドウが特別なカテゴリ「メインスレッド」をどのように割り当てているか知っていますか?

答えて

5

デバッガは、DEBUG_PROCESSオプションを使用してCreateProcessでデバッグを開始します。メインスレッドのハンドルはPROCESS_INFORMATION.hThreadに返されるので、そこには推測されません。アタッチするのが少し難解です。おそらく、DebugActiveProcess()でアタッチした後、最初のCREATE_THREAD_DEBUG_EVENT通知がWaitForDebugEventから見えます。

詳細を見たい場合は、MDbgのsource codeを利用できます。

+0

ああ、意味があります。情報をありがとう。 SourceCodeは間違いなく面白いです。 –

+0

CREATE_THREAD_DEBUG_EVENT通知は非同期です。私は配達の順序が保証されているかどうかはわかりません。しかし、CreateProcessから返された情報は理にかなっています。 –

関連する問題