VS2010 / .NET 4.0中BackgroundWorker线程访问的区别?

时间:2010-05-12 14:10:56

标签: c# winforms multithreading .net-4.0 backgroundworker

这是一个有趣的问题 - 在针对.NET 2.0 / .NET 3.0 / .NET 3.5运行的VS2005 / VS2008中,BackgroundWorker线程可能无法直接更新启动该线程的WinForms表单上的控件 - 您将获得{{ 1)}在BackgroundWorker之外说明“跨线程操作无效:控制'控件'从一个线程访问,而不是它创建的线程”。我记得2004年左右,当我第一次开始使用后台线程编写.NET WinForms应用程序时。有几种解决问题的方法 - 这不是一个要求答案的问题。

我最近被告知,当用VS2010 / .NET 4.0编写时,现在允许这种操作 。这似乎不太可能,因为这种对象访问限制一直是线程安全编程的一个相当基本的部分。允许BackgroundWorker线程直接访问不由其自身拥有但由其父UI形式拥有的对象似乎与该原则相反。通过.NET 4.0文档进行的拖网没有发现任何可以解释这种行为的明显变化。

我没有VS2010 / .NET 4.0来测试它 - 有权访问该工具集的人是否知道模型是否已更改为允许这种线程交互?我想将来利用它,或者部署线索。 ;)

1 个答案:

答案 0 :(得分:6)

没有;它仍然是一个InvalidOperationException。

我测试它只是为了确保。