3

.NET 4.0ThreadLocal<T>でクラスが導入されました。これはすばらしいことです。さて、私のアプリのユースケースには、Java のInheritableThreadLocalクラスのようなものが必要です。.NET にそのようなものはありますか? そうでない場合、新しいスレッドはどのようにしてそのスレッド ローカル変数を親スレッドの変数で初期化できますか? 初期化ファクトリメソッドを使用する必要があると思いますが、そこに何を入れればよいかわかりません。

4

1 に答える 1

0

私が考えることができる最も近いことは、ILogicalThreadAffinitive を使用し、CallContext.SetDataを使用してスレッドの CallContext にオブジェクトを格納することです。

ILogicalThreadAffinitive を実装するオブジェクトは、BeginInvoke や ThreadPool.QueueUserWorkItem などの論理コンテキスト スイッチ間を流れます。また、このメソッドは、スレッド プールを使用している場合に ThreadLocals を使用するよりも安全です。これは、スレッド ローカル値をスレッドに「ストランド」して別のスレッドに偶然に取得させる方法がないためです。

于 2011-04-24T03:36:38.147 に答える