C# 以Excel为所有者的Form.ShowDialog速度较慢

C# 以Excel为所有者的Form.ShowDialog速度较慢,c#,winforms,interop,C#,Winforms,Interop,我正在开发一个Excel加载项,我有一个表单(WinForms),我希望它是模态的,并显示中心父级。我将Excel的句柄分配给一个NativeWindow,然后在调用ShowDialog时将其用作owner参数。看起来像这样: NativeWindow excel = new NativeWindow(); excel.AssignHandle(new IntPtr(application.Hwnd)); // interop Excel app MyWindow window = new Wi

我正在开发一个Excel加载项,我有一个表单(WinForms),我希望它是模态的,并显示中心父级。我将Excel的句柄分配给一个
NativeWindow
,然后在调用
ShowDialog
时将其用作
owner
参数。看起来像这样:

NativeWindow excel = new NativeWindow();
excel.AssignHandle(new IntPtr(application.Hwnd)); // interop Excel app
MyWindow window = new Window();
window.ShowDialog(excel);
在此处调用
ShowDialog
需要约5秒钟。如果我只是正常地调用
ShowDialog
,所有其他代码都完好无损,它会立即出现——因此我有理由相信这就是罪魁祸首


我在做什么蠢事吗?是否有我可以提前启动的事件或延迟加载(或Excel本身)?

除了Excel思考一段时间之外,没有明显的原因说明这会很慢。ShowDialog()已经非常擅长自动选择正确的窗口作为所有者,它使用GetActiveWindow()。有关可能的解决方案,请参阅。