2013-10-18 10 views
7

私は新しいC#アプリケーションに登場するスレッドの目的が何であるか把握しようとしています。 私は空の主な機能を持つ新しいコンソールアプリケーション作成:たまにC#の非常に小さなコンソールアプリケーション(Visual Studio 2012)のデフォルトスレッド

Default Threads

static void Main(string[] args) 
{ 
} 

をし、関数の最後にブレークポイントを入れて、それから私は、スレッドのウィンドウに見えました8つのスレッド、時には7つのスレッドを表示します。

すべてのスレッドの目的は何だと説明できますか?そのような単純なプロジェクトにはなぜ必要なのですか?

+1

.NETは管理されたランタイムなので、自動的に動作させるための処理が必要な場合があります。たとえば、ガレージコレクション。それは専用のスレッドで実行されます。一部のスレッドは、スレッドプールに属しているため、作業が「待機」している場合があります。 – vcsjones

答えて

6

要するに、これらの余分なスレッドは、GC、ファイナライザ、VS、およびデバッガ関連です。下記のリンクは、あなたの質問に、より詳細な回答を提供します。すべての

Why does this simple .NET console app have so many threads?

+0

どちらがGCで、どちらがファイナライザーであるかを知ることができますか? – Alon

+0

そして、最も優先度の高いスレッドは何ですか? – Alon

+0

GCは通常の優先度で、ファイナライザは最高です。 http://stackoverflow.com/questions/830822/net-garbage-collector-what-is-its-thread-priority/919583#919583 –

2

まず私たちは、スレッドが何であるかを理解する必要があると思いますか?

スレッド:

スレッディングは、一度に複数の操作を行うことができるようにあなたのプログラムが並行処理を実行することができます。たとえば、アプリケーションに重いイメージをロードしたり、バックグラウンドタスクを実行したりできます。そのときは、ファイルへのストリーミングを処理できます。

スレッドを使用しない場合は、アプリケーションにイメージをロードするときにUIがスタックされ、何もできず、イメージのロードが完了するまで待ってください。

私たちのアプリケーションが7-8スレッドで開始するのはなぜですか?

だから、我々が持っているスレッドを参照できます:

デフォルトでは、C#のプログラムは、一つのスレッドを持っています。このスレッドは、Mainメソッドで開始および終了するプログラム内のコードを実行します。

ライフサイクルが終了したときにオブジェクトを強制終了するガベージコレクタスレッドもあります。

また、デバッグのスレッドがいくつかあります。

関連する問題