2

有没有办法让 ThreadStatic 变量从一个线程转移到另一个线程?我有一堆 ThreadStatic 变量,现在我将我的操作转换为异步的,我希望能够将它们从第一个线程(设置它们的位置)“传输”到回调线程(读取它们的位置) )。这可能吗?

4

4 回答 4

2

不可以。您需要通过异步调用保留操作的上下文。这就是大多数异步调用的“状态”参数。

ThreadStatic变量在某些情况下可能很有用,但我通常对它们保持警惕。除非您真的知道您不需要任何类型的线程敏捷性,否则最好以更明确的方式保持状态。

于 2009-03-19T19:13:12.180 回答
1

最好的方法是向您的操作传递一些对象,它可以在回调之前设置您的 threadstatic 变量。无法从调用线程直接访问 threadstatic 变量。

话虽如此,我会重新考虑你的设计。如果您希望该变量可从多个线程使用,它可能不应该是 threadstatic 变量。它可能应该通过其他方式进行管理。

于 2009-03-19T19:13:07.500 回答
0

如果您需要这样做,您可能不希望它们成为ThreadStatic. 您可以制作静态Dictionary<int,VarType>并将线程 ID 映射到变量。

于 2009-03-19T19:13:12.617 回答
0

正如 Jon 所说,在我看来,最好的方法是使用state参数。但是,如有必要,您可以查看System.Runtime.Remoting.Contexts.Context

于 2009-03-20T01:08:56.973 回答