0

オブジェクトを静的に利用できるようにする必要があります:

(1) プログラムが実行されている現在のスレッド (2) そのスレッドによって開始されたすべてのスレッド (3) そのスレッドによってキューに入れられたすべてのスレッド プール タスク

これを行うために私が考え出した 1 つの方法は、 をキーとする ConditionalWeakTable を使用することです。これはThread.CurrentPrincipal.Identity、そのオブジェクト (設定されている場合) が .NET フレームワークによって適切に渡されるように見えるためです。しかし、私は疑問に思っています (1) このアプローチには制限や問題がありますか? (2) .NET フレームワークに既に組み込まれている、この問題を解決するための別のよりクリーンなアプローチはありますか?

4

1 に答える 1

0

これを行う最善の方法は、「LogicalCallContext」を使用することでした。基本的に、私は static を維持し、guid を特定の論理制御フローに関連付けるConcurrentDictionary<Guid, MyObject>ために使用します。CallContext.Logical[Get|Set]Data("uniqueStringKey", guid);これは、手動で作成されたスレッドとスレッド プールの両方で正しく機能することがわかりました。

于 2013-08-08T12:46:34.900 に答える