[已解决问题] 多线程系统中如何使用静态变量?
提问时间: 2008-05-30 18:57
悬赏分:20 浏览:374 次

该静态变量对于每个线程来说,值是不一样的,例如:public static string StaticString,对于

线程1:该值为“1”,

线程2:该值为“2”

如果该变量不为静态,就不存在这个问题,但现有系统中很多地方都调用了这个静态变量。

如何使静态变量仅作为某线程的“全局”使用,而不是整个系统的“全局”?

不知我说清楚没……

提问者:麒麟.NET - 小虾三级
最佳答案
你是希望这个静态对象对于每一个线程不一样吗?如果是,可以在你的静态字段上添加System.ThreadStaticAttribute。这样,这个对象就是对不同的线程拥有不同的值了。 可以参考我以前的一篇Blog: http://www.cnblogs.com/Cajon/archive/2007/03/21/Multi_Thread_Win_Form.html
2008/5/31 13:13:58 回答者:Colin Han


提问者对于答案的评价:呵呵,一开始也是用的Dictionary记录线程ID和原变量,不过还是这种方法是最好的,多谢
其它回答(5)
when u guys try to update this static value, use public void UpdateValue(string newValue) { try(object) { StaticString = newValue; } }
3个月前   回答者:micYng - 菜鸟二级
做一个dictionary静态的,用线程的ID作为key,那样获取和设置他的value,应该可以得到效果吧
3个月前   回答者:JesseZhao - 菜鸟二级
线程的托管 ID 是不唯一的, 就是说有可能被以后的线程占有.
3个月前   回答者:随风流月 - 菜鸟二级
lock关键字吧,访问的时候lock掉,访问完结束。
3个月前   回答者:zeus2 - 菜鸟二级
ThreadStaticAttribute 这个应该只在WinFowm环境下有效吧~~
3个月前   回答者:沙加 - 老鸟四级
评论
3个月前   Colin Han :
@沙加
这个Attribute是为CLR指定的,并不仅限于WinForm开发。应该在Web开发中也适用。但是,Web开发中,因为一部分线程的分配和调度是由Server控制的,所以使用这个Attribute时需要多注意一些。
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关链接