在VS2010 / .NET 4.0中,BackgroundWorker线程访问的差异是什么?

3
在使用VS2005 / VS2008运行.NET 2.0 / .NET 3.0 / .NET 3.5时,BackgroundWorker线程可能无法直接更新启动该线程的WinForms窗体上的控件 - 您将从BackgroundWorker获得一个System.InvalidOperationException,其中指出“跨线程操作无效:从非创建它的线程访问控件'thecontrol'”。我记得在2004年左右开始编写带有后台线程的.NET WinForms应用程序时遇到过这个问题。解决这个问题有几种方法 - 这不是一个要求那个答案的问题。
最近有人告诉我,在VS2010 / .NET 4.0中编写此类操作现在是允许的。这似乎不太可能,因为这种对象访问限制一直是线程安全编程的一个相当基本的部分。允许BackgroundWorker线程直接访问其父UI窗体拥有而不是自己拥有的对象似乎与该原则相矛盾。浏览.NET 4.0文档并没有发现任何明显的更改可以解释这种行为。
我没有VS2010 / .NET 4.0来测试这个问题 - 有没有使用该工具集的人确切地知道模型是否已更改以允许这种线程交互?我想在未来利用它,或者使用cluestick。 ;)
1个回答

6

不行,它仍然是 InvalidOperationException。

我进行了测试以确保。


是的,我也亲自测试过了,在一台个人笔记本电脑上找到安装了VS2010的人后进行了测试,它像以前一样抛出了异常。现在提示你需要再仔细思考了。 - Eight-Bit Guru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接