[ThreadStatic]
.NET フレームワークのさまざまな場所で使用され、さまざまな機能にアンビエント コンテキストを提供します (たとえばTransaction.Current
、これは に使用されTransactionScope
ます)。
残念ながら、これはスレッド ジャグリングを行う機能 (ASP.NET、async キーワード コード) がスレッドを切り替えるが、 をコピーしないことを意味TransactionScope
しTransactionScope
ます。
スレッドの切り替え中に状態を正しくコピーする別のメカニズムCallContext.LogicalGetData
(詳細はこちら) があります (少なくとも .NET 4.5 では)。TransactionScope
よりもこれを使用した方が良いように思えます[ThreadStatic]
。
を使用している機能が[ThreadStatic]
、下位互換性を必要とする既存の機能ではなく、今日作成されたものである場合、それらは を使用して作成されCallContext.(G|S)etLogicalData
ますか?