首页 新闻 搜索 专区 学院

多线程系统中如何使用静态变量?

0
悬赏园豆:20 [已解决问题] 解决于 2008-06-02 13:37
<P>该静态变量对于每个线程来说,值是不一样的,例如:public static string StaticString,对于</P> <P>线程1:该值为“1”,</P> <P>线程2:该值为“2”</P> <P>如果该变量不为静态,就不存在这个问题,但现有系统中很多地方都调用了这个静态变量。</P> <P>如何使静态变量仅作为某线程的“全局”使用,而不是整个系统的“全局”?</P> <P>不知我说清楚没……</P>
麒麟.NET的主页 麒麟.NET | 老鸟四级 | 园豆:3614
提问于:2008-05-30 18:57
< >
分享
最佳答案
0
你是希望这个静态对象对于每一个线程不一样吗?如果是,可以在你的静态字段上添加System.ThreadStaticAttribute。这样,这个对象就是对不同的线程拥有不同的值了。 可以参考我以前的一篇Blog: http://www.cnblogs.com/Cajon/archive/2007/03/21/Multi_Thread_Win_Form.html
Colin Han | 老鸟四级 |园豆:3041 | 2008-05-31 13:13
其他回答(5)
0
when u guys try to update this static value, use public void UpdateValue(string newValue) { try(object) { StaticString = newValue; } }
m.s | 园豆:260 (菜鸟二级) | 2008-05-30 19:48
0
做一个dictionary静态的,用线程的ID作为key,那样获取和设置他的value,应该可以得到效果吧
JesseZhao | 园豆:305 (菜鸟二级) | 2008-05-30 20:32
0
线程的托管 ID 是不唯一的, 就是说有可能被以后的线程占有.
随风流月 | 园豆:405 (菜鸟二级) | 2008-05-31 07:51
0
lock关键字吧,访问的时候lock掉,访问完结束。
zeus2 | 园豆:92 (初学一级) | 2008-05-31 09:28
0
ThreadStaticAttribute 这个应该只在WinFowm环境下有效吧~~
沙加 | 园豆:3680 (老鸟四级) | 2008-05-31 23:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册