当从外接程序调用WPF时缓慢Excelclosures

我有一个Excel加载项,在其上调用一个新线程的WPF应用程序的button。 当我closuresExcel没有打开我的WPF应用程序或打开它,然后再次closures后,Excel立即closures,但是,每当我打开应用程序,然后closuresExcel,Excel需要5-10秒closures。 我只是遇到了这些解决scheme,这两者都没有帮助:

  • VSTO运行时更新以解决缓慢关机…
  • 这是一种问题,但提问者的问题结果是不一样的。

我正在运行VS 2010和Excel 2010,所以不应该存在互操作性问题。

有没有人有build议?

线程代码:Private qbdThread As Thread = Nothing Private frmQBD As QBDApplication.MainWindow

qbdThread = New Thread(New ParameterizedThreadStart(AddressOf RunQBD)) qbdThread.SetApartmentState(Threading.ApartmentState.STA) qbdThread.Start(TabletType) AddHandler QBDApplication.MainWindow.QBDClose, AddressOf QBDThreadClose Private Sub RunQBD(Optional tabletQBDSelected As String = Nothing) ... frmQBD = New QBDApplication.MainWindow(contacts, saveLocation, tabletQBDLocal) frmQBD.Show() frmQBD.Activate() System.Windows.Threading.Dispatcher.Run() End Sub 

这个代码在用户closures新线程时运行:

 Me.Close() System.Windows.Threading.Dispatcher.CurrentDispatcher.InvokeShutdown() 

然后在主线程(ThisAddin.vb)上使用以下代码引发一个事件:

 Private Sub QBDThreadClose() qbdThread = Nothing frmQBD = Nothing End Sub 

另外需要注意的是,当frmQBD不是作为类variables创build的,而是在“RunQBD”子目录中标注的时候,这个问题不会发生。 这将解决我的问题,但是我不能在主线程上访问像frmQBD.Activate()这样的东西,我需要这样做。

编辑:代码已被更新

这个微软bug在https://connect.microsoft.com/VisualStudio/feedback/details/783019/word-slow-shutdown-on-windows-8-when-using-wpf-in-application-addin中有描述。 它最初是在2013年报告的,据说在2014年是固定的,但现在似乎又回来了。

我们可以在Windows 10上运行Excel和Word 2016来重现这个确切的问题,但神秘的不是在PowerPoint中。 最新版本的VSTO运行时已安装。 我们无法重现在Windows 8.1上运行的Office 2013中的问题。

解决方法如上面的链接所述 – 转到设备pipe理器>人机界面设备,并禁用“HID兼容的触摸屏”(在我们的testing中)或另一个“HID兼容”项目。