gpt4 book ai didi

c# - 将 WinForm 应用程序中的异常冒泡到 WPF 应用程序中。是否可以?

转载 作者:行者123 更新时间:2023-12-03 09:09:21 25 4
gpt4 key购买 nike

在我的解决方案中,我的主要项目是 WPF c# 项目。在解决方案中,有一个我需要集成的遗留项目,它是一个 VB winforms 项目。这是通过 WPF 项目中的一个包装类完成的,该类操作我的遗留项目中的一些公共(public)对象。

在我的 WPF 项目中,我实现了 Application_DispatcherUnhandledException 以便让异常冒泡到这里,我将它们记录在我们的数据库中以进行调试。

我遇到的问题是,每当遗留项目中的某些东西崩溃(例如 NullReferenceException)时,代码永远不会到达我们在主 WPF 项目中的 Application_DispatcherUnhandledException 实现。

是否可以将所有未处理的异常从 WinForms 项目重定向到 WPF 之一?

最佳答案

如果您可以发布一个包装器外观的示例,那就太好了。
以及您究竟如何“启动您的 winforms 应用程序”
您是否有权访问实际 Form项目的类别?

虽然这并不完全是“冒泡” - 可以编写一个包装器,强制异常在调度程序上“重新抛出”。

internal class WinFormsWrapper
{
private Form _form;

public WinFormsWrapper(Form f)
{
_form = f;
}

public void Run()
{
//Winforms exceptions thrown on the message loop should go here
//this handler will force them do be "rethrown" on the calling dispatcher
System.Windows.Forms.Application.ThreadException += (wf_sender, wf_e) => { ExceptionDispatchInfo.Capture(wf_e.Exception).Throw(); };
System.Windows.Forms.Application.Run(_form);
}
}

关于c# - 将 WinForm 应用程序中的异常冒泡到 WPF 应用程序中。是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48531211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com