2012-02-20 9 views
13

基本VCLアプリケーションを作成して実行すると、いくつかのスレッドが実行されています。マルチスレッドアプリケーションのデバッグを容易にするために、それぞれのスレッドは何ですか?デフォルトのVCLアプリケーション内の他のスレッドとは何ですか?それらは目的によって名前を付けることができますか?

すべての私の子スレッドの名前を付けようとすると、スレッドステータスデバッグウィンドウを表示しているときに各子スレッドが何をしているのかを明確にするためにデバッグすると便利です。

+3

基本的なDelphiアプリケーションは、IDEで実行している場合を除いて(デバッガが起動していない限り)、1つのスレッドを持っています。追加のスレッドは、IDEおよび/またはWindows自体に属します。 –

+3

@Kenそれは最新のデルファイには当てはまりません。 –

+1

私はそれを見ます。私は以前はなかった。 :)ありがとう。 –

答えて

14

64ビットWindows 7には、3つのスレッドがあります。XE2のプレーンなバニラ32ビットVCLアプリ.3つのスレッドがあります(これは、名前が付けられていない場合は、それを追跡するためのヒントです)。メインスレッドと2つのエキストラ。 2つの余分なスレッドは、WTSRegisterSessionNotificationを呼び出すことによってTApplication.CreateHandleに作成されます。名前を付けたい場合はthreads in the processを列挙し、NameThreadForDebuggingと呼ぶことができます。

私の経験では、アプリ内のすべてのスレッドを追跡するのは非常に難しいです。あなたのアプリケーションが中程度に複雑になるとすぐに、多くのスレッドが出たり来たりする可能性があります。私は個人的に私が他の誰かの責任であると名付けなかったものを見る!

+7

+1私は他人の責任として名前を付けていないものを個人的に見る!_ – NGLN

+6

しかし、自分の名前をつけないと、すぐに迷子になります。私が示唆しているもう一つのルールは逆です。それが私のものなら、私はそれに名前を付けるのが良いか、それは泥の中で失われるでしょう。 Delphiのデバッガが、スレッドが何をするかでHINTすることも、このスレッドが最初に登場したDelphiのユニット名のコンテキストを言及することもできれば、大きな助けになります。 –

関連する問題