有没有办法让ThreadStatic变量从一个线程转移到另一个线程?我有一堆ThreadStatic变量,现在我将我的操作转换为异步,我希望能够将它们从第一个线程(它们被设置)“转移”到回调线程(它们将被读取) )。这可能吗?
答案 0 :(得分:2)
没有。您需要使用异步调用保留操作的上下文。这就是大多数异步调用的“state”参数。
ThreadStatic
个变量在某些情况下很有用,但我一般都对它们持谨慎态度。除非你真的知道你不需要任何线程敏捷性,否则最好以更明确的方式保持状态。
答案 1 :(得分:1)
最好的方法是将操作传递给某个对象,在调用之前它可以设置你的threadstatic变量。无法从调用线程直接访问threadstatic变量。
话虽这么说,我会重新考虑你的设计。如果您希望变量可以从多个线程获得,则它可能不应该是一个线程静态变量。它可能应该通过其他方式进行管理。
答案 2 :(得分:0)
如果您需要这样做,您可能不希望它们是ThreadStatic
。您可以创建静态Dictionary<int,VarType>
并将线程ID映射到变量。
答案 3 :(得分:0)
在我看来,最好的方法是使用 state 参数,正如Jon所说。但是,如有必要,您可以查看System.Runtime.Remoting.Contexts.Context。