2

.NET Framework 3.5のデバッグ中に、WinFormsアプリケーションで名前のない「ワーカースレッド」が検出されました。空のワーカースレッドは何ですか?

デフォルトでワーカースレッドが1つあるアプリケーションを開くとわかります。しかし、デバッグの途中でデバッガを一時停止し、「スレッド」ウィンドウを見ると、私は約5以上の類似スレッド(優先度=正常)が表示されます。アプリケーションによって開か

すべてのスレッドが名前を得たので、これらは(少なくともThread.Startを経由して、コードから開かれていない)

私はダブルクリックしようとすると、VS.NETはできませんコードを探します。

これらのスレッドは何ですか?それらは正常ですか、何らかの操作で何らかの理由で空のスレッドが残っていますか?

タイマーなどの明白でないコントロールでも、関数はバックグラウンドで一時スレッドで動作しますか?

+0

System.Windows.Forms.Timerはシングルスレッドであり、親で実行されます(通常は「スレッド」)。メインスレッド ")スレッド –

答えて

5

VSのスレッドとWinDbgのスレッドを比較しただけで、スレッドウィンドウにVSがスレッドプールスレッドを「ワーカースレッド」と表示しているようです。したがって、私は、あなたが見ているものは、BackgroundWorker、Timer、BeginInvokeまたは類似のスレッドプール機能の使用のために開始されたスレッドだと仮定します。 [ファイル]ダイアログを保存/ GetOpenFileName関数()(またはppenを上げ、他の関数を呼び出すときに、Windowsは、あなたのアプリケーションにスレッドを追加する時点で

0

これらのスレッドは、Visual Studioがどのようにプログラムをホストしてデバッグするかに関係しています(Visual Studio外でリリースビルドを実行し、プロセスエクスプローラを使って精査してみましたか?

明示的にVSホスティングの一部でない場合は、タイマ、非同期メソッドの呼び出しに使用されている.NETスレッドプールに関連している可能性があります。

0

です。

Windowsは明らかにそれをバックグラウンドでドライブ/フォルダのスキャンを行い、

+0

これはかなり興味深い –

関連する問題