我已经将一个变量定义为ThreadStatic:
public static class MyApplicationContext {
[ThreadStatic]
public static bool Monitoring;
}现在,我应该设置来自MainThread的变量监视(它已经启动了新线程):
this.syncThread = new Thread(this.InternalWork);
this.syncThread.SetApartmentState(ApartmentState.STA);
this.syncThread.Start();
// now, I should access MyApplicationContext.Monitoring of syncThread.有办法这样做吗?
发布于 2014-06-06 15:40:11
我的理解是,ThreadStatic总是相对于线程。如果你指示线程阅读是给你的,你就可以得到这个信息。
您还可以将静态值设置为对象,然后让该线程将引用添加到要监视的中心位置。您仍然会遇到这样的问题:确保对该对象的更改定期同步或将其设置为易失性。
通过手动同步或将其设置为易失性,可以删除线程本地的许多优点。如果您的ThreadStatic对象是一个可能发生变化的数据结构,您也需要小心。试图读取更改的数据结构的主线程可能引发异常,甚至返回错误的数据。
我没有使用ThreadStatic的经验,所以我只想从我的知识出发。
https://stackoverflow.com/questions/24085470
复制相似问题