私は非同期処理(それ自体が多くのスレッドを使用する)を備えたマルチスレッドアプリケーションを持っています。非同期がなければ、現在のスレッド識別子をログに格納するだけで、実行フローを記録してトレースすることが容易になり、どのスレッドがどのログラインを実行したかを知ることができます。マルチスレッド非同期コードでのログイン
非同期環境で同様のことを達成するにはどうすればよいですか?多くの場合、awaitが呼び出されると、次のコードが別のスレッドに割り当てられます(スレッドプールマネージャがこれらの割り当てを効率的に行うことができます)。問題は、突然、実行フローにこの固定スレッドIDがなく、2つの部分をまとめることが難しいことです。
コード全体に保持されるタスクの識別子はありますか?私は、メソッドで5倍の呼び出しを待っているとしましょう。スレッドIDを使用すると、ログに最大6つの異なるIDが表示されます。私は一つのことがほしいと思います。もし既に存在するなら、私は好きです(私はオブジェクトを作成してそれを私のログ機能に何度も渡すことができますが、何かがあればそれは良いでしょう)。
Task.IdまたはTask.CurrentIdはこの目的に適していますか、それとも何か他のものですか?
作成するタスクごとにid(例:自動インクリメントを使用)を生成するだけで済みます。しかしそれを通すこと(例えば 'ContinueWith')も別の問題です。 – Sinatr
私は利用可能な識別子の準備ができているかどうかもっと尋ねています。私はそれが手動でプログラムできることを知っていますが、それは実際に私が避けたいものです。 – Wapac
Task.IdはTaskインスタンスの識別子ですが、この記事を読んだら、少しの情報を得ることになります。[Task.Idのいくつかの言葉](http://blog.stephencleary.com/2013/03 /afew-words-on-taskid-and.html) – Fabio