在excel中,我正在显示一个在新线程上运行的WPF窗口。 There are numerous references to it in stackoverflow this is but one.
问题是,如果用户在打开WPF窗口后立即关闭Excel,则Excel似乎挂起但最终会关闭窗口。关闭窗口并调用Dispatcher.InvokeShutdown似乎需要很长时间。
是否有人知道Excel或Addin中的早期事件比调用Dispatcher.InvokeShutdown的窗口的close事件更新?我在WPF窗口上使用Win API添加了一个PROC,但在我的测试Excel中没有(即使它是窗口的所有者)将标准消息发送到窗口关闭。
答案 0 :(得分:0)
原因:excel在引发关闭事件之前先处理任务窗格。
解决方法: (确保已选中ShowAllFiles,否则找不到Designer.vb)
ThisAddin.vb:添加您的处置代码
Protected Sub PrepareShutdown
'Close your wpf windows/controls.
'Including Dispatcher.CurrentDispatcher.InvokeShutdown()
End Sub
ThisAddin.Designer.vb:将现有块更改为
Protected Overrides Sub OnShutdown()
PrepareShutdown()
Me.VstoSmartTags.Dispose()
Me.CustomTaskPanes.Dispose()
MyBase.OnShutdown()
End Sub
hth,keepITcool