サービス アプリケーションがあり、各エントリ/ディスパッチを何らかのコンテキストに関連付けたいと考えています。ただし、新しいスレッドが「作成」されると、システムが既存のスレッドを再利用しているように見えることがあります。
新しいスレッド/タスクを作成するときに、スレッド A とスレッド B のどちらを使用しているか (CLR が同じスレッドを使用することを選択した場合でも) を示す固有の情報を取得できますか?
サービス アプリケーションがあり、各エントリ/ディスパッチを何らかのコンテキストに関連付けたいと考えています。ただし、新しいスレッドが「作成」されると、システムが既存のスレッドを再利用しているように見えることがあります。
新しいスレッド/タスクを作成するときに、スレッド A とスレッド B のどちらを使用しているか (CLR が同じスレッドを使用することを選択した場合でも) を示す固有の情報を取得できますか?
新しいスレッドを作成すると、常に新しいスレッドが作成されます。
スレッド プール スレッドを使用する場合、意図的に新しいスレッドを作成せず、代わりにプールからスレッドを再利用します。
使用すると、タスクの作成/継続オプションが指定Task
されていない限り、デフォルトでスレッド プール スレッドが使用されます。LongRunning
現在のスレッドの ID を取得するために使用できますがThread.CurrentThread.ManagedThreadId
、デバッグ/開発目的以外では、おそらくそれに依存すべきではありません。
一般的に言えば、新しいスレッドが作成されるか再利用されるかは、コードにとって重要ではありません。問題がある場合は、コードに何か問題があることを示しており、依存しているものとその理由をよく調べる必要があります。