2016-10-15 15 views
0

私のアプリケーション用の静的DLLモジュールにWinForms UIコードがあります。メインフォームには、ユーザーがファイルパスを変更する必要があるときにopenfiledialogを呼び出すダイアログフォームがあります。メインスレッドでメインのwinformオブジェクトを作成すると、新しいスレッドの呼び出しでApplication :: run()が正常に動作します。私が主なwinformオブジェクトの作成をApplication :: run()を呼び出す同じスレッドで動かすと、これはWin XPで正常に動作しますが、Win7とWin8でハングアップしています。Openfiledialogが表示中にハングアップする

答えて

1

FileDialog.AutoUpgradeEnabledはデフォルトでtrueに設定されています。これは、Vista +で動作しているときにファイルダイアログがIFileDialogインターフェイスを使用することを意味します。 VistaのファイルダイアログはCOMに基づいています。 Hangingを避けるために、STAスレッド(ApartmentState = ApartmentState.STA)とメッセージポンプ(Application :: Runなど)が必要です。

関連する問題