私はWCFサービスを持っており、データベースへの各呼び出しを記録します。後で、例外が発生した場合は、別のデータベースにも記録されます。C#のスレッドコンテキストは正確に何ですか?
これらの両方のログを結びつけて、例外が発生している可能性があることがわかりました。これを行うために、私は一呼出しごとに得ることができる一意のIDをいくつか求めました。
スレッド全体が1つのスレッドで実行されているので、たとえば、スレッド名をGUIDに設定できます。 System.Threading.Thread.CurrentThread.Name = Guid.NewGuid().ToString();
しかし、これは少しハッキーです。
ネットを検索すると、私はSystem.Threading.Thread.CurrentContext.SetProperty()
を発見しましたが、そのコンテキストが何であるか正確には疑問に思っています。スレッドの持続時間の間プロパティを格納するように設計されていますか?スレッドごとにユニークですか?
5つの同時WCFコールがある場合、「コールごとに」発言していなければ、コンテキスト内で起こっていることの間に矛盾が生じないようにしたいと思います。
誰かが明確にできるでしょうか?
おかげさまで、ありがとう! – NibblyPig
アップデートとして、.NET 4.6を使用している場合は、 'ThreadLocal'から' 'AsyncLocal'(https://msdn.microsoft.com/en-us/library/dn906268(v=vs.110)に切り替える必要があります。 ).aspx)を使用すると、ストレージを非同期/待機の境界を越えて流れることができ、スレッドをジャンプする可能性があります。 –