Outlook 2003用に作成しているプラグイン(vb.NET 4.0、WinXP SP3、Visual Studio 2010)で、かなり奇妙な動作が発生しました。
メニューからセットアップウィンドウ(Windowsフォーム)を開いています。ユーザー設定を変更するだけでなく、ボタンをクリックして、リモートサーバーからXMLファイルをインポートする関数を呼び出すこともできます。
この関数は、ローカルフォルダーから古いファイルを削除し、My.Computer.FileSystemメソッドを使用してサーバーから新しいファイルをコピーする以外のことはほとんど行いません。
次に、奇妙な部分があります。ファイルが正常にコピーされると、ユーザーに通知するメッセージボックスが表示されます。閉じた瞬間から、Outlookとセットアップウィンドウの両方がフリーズしますが、たとえばキーボードを使用してセットアップフォームを閉じることができるため、完全にはフリーズしません。マウスに反応しなくなりました。キーボードを使用してセットアップフォームを閉じると、フォームを呼び出していた関数から「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーも表示されます(フォームを閉じるとすぐにエラー処理になります)。Outlookはフリーズしたままなので、プロセスを終了する必要があります。
私が気づいた追加の事柄:
1.)新しいXMLファイルがコピーされておらず、関数が以前に終了した場合(つまり、現在のバージョンがすでに存在するか、サーバーが利用できないため)、結果のメッセージボックスがプログラムをフリーズすることはありません。
2.)問題のメッセージボックスを関数からフォームのボタンクリックイベントに移動しても、何も変更されません。
3.)メッセージボックスを削除すると問題が解決します。ただし、セットアップフォームによって作成された次のメッセージボックスでも同じエラーが発生します。
4.)通常のSystem.Windows.Forms.MessageBoxをWPF System.Windows.MessageBoxに置き換えると、問題も解決します。ただし、MsgBox関数は同じ障害を引き起こします。
5.)Outlookでは、マウスを使用してフォルダを参照できますが、メニューバーやボタンにアクセスできず、「X」でウィンドウを閉じることもできません。
6.)新しいファイルが無効な場合、そのファイルは削除され、古いファイルの名前が変更されます。この場合、2つのメッセージが表示され、今回はボタンが2回クリックされ、最後(4番目)のメッセージボックスが閉じられた後にのみプログラムがフリーズします。セットアップフォームを閉じて2回クリックする間に再度開くと、すべてが正常に機能し続けます。また、セットアップフォームを閉じた後でも、Outlook自体を通常どおりに使用できます(メニュー/ボタンがフリーズすることはありません)。
7.)これはデバッグモードで発生しますが、通常モードでも発生します。
なぜこれが起こるのか誰かが知っていますか?
ありがとう!