当前位置:  开发笔记 > 编程语言 > 正文

是否在后台工作者调用之间保留了线程本地存储?

如何解决《是否在后台工作者调用之间保留了线程本地存储?》经验,为你挑选了1个好方法。

后台工作线程是否重复使用?

具体来说,如果我在后台工作程序的DoWork()方法中设置了一个命名数据槽(线程局部存储),那么该数据槽的值是否会持续存在,以后可能会发现某个其他线程?

我不会这么想,但我有这个错误......

编辑:这篇博客文章表明BackGroundWorker使用ThreadPool,这意味着线程重用.所以问题就变成了; 重用线程是否可能在调用之间持久保存线程本地存储?



1> scorpio..:

当线程池重用线程时,它不会清除线程本地存储中或使用ThreadStaticAttribute属性标记的字段中的数据.因此,通过一个方法放置在线程本地存储中的数据可以暴露给由同一线程池线程执行的任何其他方法.访问使用ThreadStaticAttribute属性标记的字段的方法可能会遇到不同的数据,具体取决于哪个线程池线程执行它.

来源:http: //msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有