【问题标题】:How to break on invalid cross-thread error如何打破无效的跨线程错误
【发布时间】:2011-05-09 14:11:40
【问题描述】:

我们刚刚从 VS2005 升级到 VS2010。我注意到,与 VS2005 不同,当调试代码并且 VS2010 IDE 遇到“无效跨线程”操作时,IDE 只是终止应用程序,而不会“破坏”导致问题的代码行。

我查看了 IDE 的“调试”>“异常”部分,但在 System.Threading 命名空间下没有找到“无效的跨线程操作”作为有效选项。我有点不知道如何让 VS2010 IDE 表现得像 VS2005 IDE,它会破坏代码并突出显示导致无效跨线程操作的行。

谁能帮帮我?

【问题讨论】:

  • 你能尝试在所有异常上启用中断吗?

标签: .net multithreading visual-studio-2010 debugging


【解决方案1】:

将“调试”>“异常”上的所有选项更改为“抛出” 这就是旧 VS 的行为方式。

【讨论】:

  • 我按照你的建议做了,打开所有的 CLR 异常来抛出。问题在于每一个错误,无论它是否在 TRY...CATCH 中都会导致 IDE 崩溃。这不是旧 VS 的行为。
【解决方案2】:

我发现,如果我打开所有 System.Threading 异常(即使未列出跨线程),IDE 现在确实会因跨线程错误而中断。我不知道“哪个”线程异常命名空间拥有这个特定选项,但是,现在我的 IDE 像 VS2005 一样工作。

【讨论】:

    【解决方案3】:

    尝试 System.UnauthorizedAccessException。这捕获了我的跨线程错误

    【讨论】:

      【解决方案4】:

      这是一个旧线程,但对于 Visual Studio 2017,我通常会在 System.InvalidOperationException 下得到一个跨线程操作异常。

      异常的文本是:

      System.InvalidOperationException: 'Cross-thread operation not valid: Control 'XXXX' accessed from a thread other than the thread it was created on.'
      

      我想可能有多种操作被视为“跨线程”错误,因此它可能属于不同的异常类别。

      【讨论】:

        猜你喜欢
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        相关资源
        最近更新 更多