2016-08-31 2 views
-3

「名前を付けて保存」ダイアログが表示されるときに発生するVSTOアドインレポートのユーザーが何人かハングします。これは、ExcelアドインとWordアドインで発生します。興味深いことに、両方のアプリケーションは、ドキュメントで「名前を付けて保存」コマンドを呼び出すとハングする傾向があります。Hanging SaveFileDialogのデバッグ方法

アプリケーション全体がちょうど

// using System.Windows.Forms; 
SaveFileDialog dlg = new SaveFileDialog(); 
// lines to configure dlg left out 
dlg.ShowDialog(); 

この状況でExcelやWordを閉じようとするとした後、メッセージボックス「エクセル/ワードを閉じることができない」フリーズので、私はこれをトラブルシューティングするために苦労しています表示され、人々はそれを取り除くためにタスクマネージャに頼らなければなりません。

「名前を付けて保存」でExcelとWordの両方が頻繁にハングするという事実は、これらのアプリケーションのビルトインの「名前を付けて保存」コマンドにアドインがどのように干渉するのかわからないため、特に不安です。

さらに悪いことに、アドインを読み込む必要はありません。 "COMアドイン"の対応する項目のチェックを外してアプリケーションを再起動しても、それらを無効にしても問題は解決しません。私は完全にアドインを削除して、 "名前を付けて保存"がアプリケーションをフリーズしないようにする必要があります。

これは、問題のアドインにコードではなく、ファイルダイアログが表示されず、ハングアップの原因となる(非アクティブな)VSTOアドインが存在すると考えられます。

ハングが必ずしも発生するとは限りません。すべてのマシンで発生するわけではありません。それはかなりランダムです。

これをさらに調査するにはどうすればよいですか?私はVisual Studio Professional 2013を持っていますが、なぜ、どこでOfficeアプリケーションがフリーズするのかを知る方法はわかりません。

+0

[C#MSDN SaveFileDialog](https://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog(v = vs.110).aspx)関連するすべてのコードを表示する必要があります。 。COM Interopを使用している場合はおそらくMarshal.Comオブジェクトを適切にリリースしてください。関連するコードをすべて提供してください – MethodMan

+0

SaveDialogが別のウィンドウの背後にある可能性があります。 –

+0

@JimHewittええ、私は既に、Excelの/ Wordのウィンドウを非常に小さくして、ダイアログをどこかに見えるようにしました。何らかの理由で画面外に表示されても、フォーカスがあれば(そしてWord/Excelをブロックする)ESCを押すと閉じますが、ESCは何もしません。 – bovender

答えて

1

Excelは、アドインが読み込まれていなくても、管理されたアドインが「ウォームアップ」レジストリ値で登録されているかのように動作します。

"Warmup"レジストリ値は、アドインのレジストリキーで1に設定されていると、最初にアドインとの最初のユーザー操作が発生したときではなく、起動時にVSTOランタイムを読み込むようになっていました。どうやら、it was never implementedとなり、その後Microsoftのオンラインdocumentation of the registry entries for VSTO add-insから削除されています。

アドインのレジストリキーから「ウォームアップ」値を削除すると、Excelの[開く/名前を付けて保存]ダイアログボックスがフリーズすることもなく、アドイン自身のSaveFileDialog.ShowDialog()も呼び出されませんでした。私はなぜこれがあるのか​​分かりませんが、明らかに "Warmup"の値は何かです。

何もしないダミーのアドインでこれを再現することができました。そのダミーアドインがHKCU\Software\Microsoft\Excel\Addinsに「Warmup」なしで登録されている場合DWORD、Excelは正常に動作します。 の値を1に追加するとすぐに、[開く]または[名前を付けて保存]をクリックするとExcelがフリーズします。ダミーのアドインはまったく何もしません。

なぜ、VSTOアドインのインストール後にOfficeアプリケーションがフリーズするのか疑問に思ったら、コードをデバッグするのではなく、レジストリからWarmup値を削除することをお勧めします"Warmup"について知る前に)。

私のユーザーからのフィードバックは肯定的です。