gpt4 book ai didi

excel - 如何以及何时关闭在 Office VSTO 插件中的另一个线程上运行的 WPF 窗口

转载 作者:行者123 更新时间:2023-12-04 16:00:06 25 4
gpt4 key购买 nike

在 excel 中,我显示了一个在新线程上运行的 WPF 窗口。 There are numerous references to it in stackoverflow this is but one.

问题是,如果用户在打开 WPF 窗口后立即关闭 Excel,则 Excel 似乎挂起但最终关闭了窗口。关闭窗口并调用 Dispatcher.InvokeShutdown 似乎需要很长时间。

有谁知道在 Excel 或 Addin 中有比调用 Dispatcher.InvokeShutdown 的窗口关闭事件更早的事件吗?我在 WPF 窗口上使用 Win API 添加了一个 PROC,但在我的测试中,Excel 没有(即使它是窗口的所有者)将标准消息发送到窗口以关闭。

最佳答案

原因:excel 在引发关闭事件之前处理任务 Pane 。

解决方法:(确保选中 ShowAllFiles,否则您将找不到 designer.vb)

ThisAddin.vb : 添加你的处置代码

Protected Sub PrepareShutdown
'Close your wpf windows/controls.
'Including Dispatcher.CurrentDispatcher.InvokeShutdown()
End Sub

ThisAddin.Designer.vb :将现有 block 更改为

Protected Overrides Sub OnShutdown()
PrepareShutdown()
Me.VstoSmartTags.Dispose()
Me.CustomTaskPanes.Dispose()
MyBase.OnShutdown()
End Sub

嗯,保持冷静

关于excel - 如何以及何时关闭在 Office VSTO 插件中的另一个线程上运行的 WPF 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50754829/

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