C# WPF[外部代码]调用业务对象属性

C# WPF[外部代码]调用业务对象属性,c#,wpf,visual-studio,C#,Wpf,Visual Studio,我有一个带有XAML前端和业务规则对象的WPF应用程序。 在VS2019 IDE(16.2.3)中运行时,我的业务对象中的方法/属性会触发突发异常。 当我独立运行应用程序时,显然WPF会吃掉这些异常。 当我试图查看调用堆栈时,它显示了[External Code],因此无法找到哪个组件是罪魁祸首。还是有可能 这在以前是没有发生过的,它始于VS的最新版本。 当异常发生时,对象已被实例化,并且存在一些空数据,因为不知何故调用了构造函数。 被调用的对象总是通过{Binding}连接到XAML,但是在其

我有一个带有XAML前端和业务规则对象的WPF应用程序。 在VS2019 IDE(16.2.3)中运行时,我的业务对象中的方法/属性会触发突发异常。 当我独立运行应用程序时,显然WPF会吃掉这些异常。 当我试图查看调用堆栈时,它显示了[External Code],因此无法找到哪个组件是罪魁祸首。还是有可能

这在以前是没有发生过的,它始于VS的最新版本。 当异常发生时,对象已被实例化,并且存在一些空数据,因为不知何故调用了构造函数。 被调用的对象总是通过{Binding}连接到XAML,但是在其他属性中,而不是在产生异常的属性中

它很难复制,因为在开发环境执行过程中随机发生

刚刚找到一个经常发生这种情况的实例(表单有一个按钮,带有带有带有x:Static bind text的工具提示)

  • 打开表单

  • 悬停以显示工具提示

  • 当工具提示消失时,将在一个完全不相关的对象中抛出一个异常(尽管该对象是绑定在XAML表单中的)
  • 如果我按Continue,该异常不会传播到代码的任何部分,它只是继续
  • 在第一次出现之后,它不会再次出现

    如何检查哪个组件/线程等称为属性/方法? 如果这是出于设计,我如何防止在与实际代码无关的异常处随机停止这种恼人的行为?
    thxs

    您是否在UI中使用过任何第三方控件。您可以尝试绑定codebehind或VM中的示例数据,并查看是否引发了相同的错误,如果是,则该错误将与您的控件或绑定相关。您必须评估传递给WPF的对象是否是线程安全的。如果不是,当WPF和您的代码同时访问同一事物时,它将随机崩溃。在调用堆栈中显示外部代码是因为在设置中启用了“仅我的代码”功能(使用Ctrl+Q搜索并禁用它),但正如您所指出的,它可能指向.NET framework代码中的某个地方。Visual Studio有很多调试多线程应用程序的工具。在“搜索线程”窗口中,可以切换到调试另一个线程。带有Intellitrace的诊断工具显示了可能对您有用的第一个更改扩展。在“异常”窗口中,您可以在任何异常发生时将所有CLR异常标记为中断程序,而不管该异常是由您或.NET framework处理的还是未处理的。每当出现异常时,它会停止程序并允许您调试它。您在UI中使用过任何第三方控件吗。您可以尝试绑定codebehind或VM中的示例数据,并查看是否引发了相同的错误,如果是,则该错误将与您的控件或绑定相关。您必须评估传递给WPF的对象是否是线程安全的。如果不是,当WPF和您的代码同时访问同一事物时,它将随机崩溃。在调用堆栈中显示外部代码是因为在设置中启用了“仅我的代码”功能(使用Ctrl+Q搜索并禁用它),但正如您所指出的,它可能指向.NET framework代码中的某个地方。Visual Studio有很多调试多线程应用程序的工具。在“搜索线程”窗口中,可以切换到调试另一个线程。带有Intellitrace的诊断工具显示了可能对您有用的第一个更改扩展。在“异常”窗口中,您可以在任何异常发生时将所有CLR异常标记为中断程序,而不管该异常是由您或.NET framework处理的还是未处理的。每当某个地方出现异常时,它将停止程序并让您调试它。