gpt4 book ai didi

wpf - 强制关闭 Excel 时如何禁止禁用加载项对话框

转载 作者:行者123 更新时间:2023-12-02 02:02:38 26 4
gpt4 key购买 nike

我的插件是使用 WPFframework 用 c#、NetOffice、ExcelDNA 编写的。有些部分也使用winform。主要 UI 是 WPF

当显示模式对话框时,用户强行关闭 Excel。下次当他们启动 excel 时,Excel 会说“Excel 遇到了'*'加载项的严重问题。如果您多次看到此消息,则应禁用此加载项并检查以查看如果有可用更新。是否要禁用此加载项?”

是,不是

用户通常在不阅读消息的情况下单击"is"或输入,然后我的加载项就会从 Excel 中消失。所以我不希望这个对话框出现。这可能吗?如何?谢谢

我尝试捕捉 AutoOpen() 中的所有异常,如下所示。但是似乎根本没有停止对话的作用。

    public void AutoOpen()
{
.....
System.Windows.Forms.Application.ThreadException += ApplicationOnThreadException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
Dispatcher.CurrentDispatcher.UnhandledException += CurrentDispatcher_UnhandledException;
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
....
}


public void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
Helper.LogError(e.Exception);
}

public void ApplicationOnThreadException(object sender, ThreadExceptionEventArgs threadExceptionEventArgs)
{
Helper.LogError(threadExceptionEventArgs.Exception);
}

public void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs args)
{
if (!(args.ExceptionObject is ThreadAbortException))
{
Exception exc = args.ExceptionObject as Exception;
Helper.LogError(exc);
}
}

public void CurrentDispatcher_UnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
Helper.LogError(e.Exception);
e.Handled = true;
}

最佳答案

我认为“用户强制关闭 Excel”是指用户从任务管理器或其他工具结束了 Excel 进程。

Excel 在功能区处理程序调用周围设置了一些内部保护措施,这样如果 Excel 在功能区事件处理程序期间崩溃,Excel 就会知道在崩溃发生时调用了哪个加载项,以便下次按照您的描述禁用。因此,如果在显示模式对话框时 Excel 意外终止,则您的加载项将被记住为“原因”。

您尝试处理未处理的异常不太可能奏效,因为 .NET 托管在 native 进程中(在 Excel 中)。因此,冒泡到 Excel 的未处理异常不会返回到 .NET 运行时,但更有可能使整个 Excel 进程崩溃。因此,尝试处理更多异常可能无济于事。

也许模态对话框不是正确的方法,因为它会使您的用户感到困惑并认为 Excel 已崩溃,从而导致意外终止。至少一定要将Excel窗口设置为模态对话框的父窗口,这样对话框就停留在Excel的前面。

关于wpf - 强制关闭 Excel 时如何禁止禁用加载项对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16447595/

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