【问题标题】:Difference in BackgroundWorker thread access in VS2010 / .NET 4.0?VS2010 / .NET 4.0 中 BackgroundWorker 线程访问的区别?
【发布时间】:2010-05-12 14:10:56
【问题描述】:

这是一个有趣的问题 - 在针对 .NET 2.0 / .NET 3.0 / .NET 3.5 运行的 VS2005 / VS2008 中,BackgroundWorker 线程可能不会直接更新启动该线程的 WinForms 表单上的控件 - 你会得到一个 @987654321 @ out of the BackgroundWorker 声明“跨线程操作无效:控件'thecontrol'从创建它的线程以外的线程访问”。我记得在 2004 年左右,当我第一次开始使用后台线程编写 .NET WinForms 应用程序时,我就遇到了这个问题。有几种方法可以解决这个问题 - 这不是一个要求答案的问题。

最近有人告诉我,在 VS2010 / .NET 4.0 中编写时,现在允许这种操作。这对我来说似乎不太可能,因为这种对象访问限制一直是线程安全编程的一个相当基本的部分。允许 BackgroundWorker 线程直接访问不是由它自己而是由其父 UI 表单拥有的对象似乎与该原则背道而驰。浏览 .NET 4.0 文档并没有发现任何明显的变化可以解释这种行为。

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

【问题讨论】:

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


    【解决方案1】:

    没有;它仍然是一个 InvalidOperationException。

    我测试它只是为了确定。

    【讨论】:

    • 是的,我自己也进行了测试,发现有人在个人笔记本电脑上安装了 VS2010;它像往常一样吐出异常。已部署线索棒。
    猜你喜欢
    • 2023-04-06
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多