.NET 3.5 でファイル マネージャーを作成しています。起動時に、アプリケーションは利用可能なドライブを列挙する必要があります。そのために DriveInfo.GetDrives を使用しています。
残念ながら、私のユーザーは、ネットワーク ドライブを切断すると、アプリケーションの起動に約 30 秒かかると嘆いていました。
ネットワーク ドライブが切断されていると、GetDrives() 関数が数秒間ハングすることがわかりました。そしてUIがフリーズします。これは、起動時と、新しいドライブを接続するたびに発生します。
要約すると、切断されたネットワーク ドライブがある場合でも、すぐに復帰する使用可能なドライブを列挙する方法が必要です。助けてくれてありがとう。
追加情報:
WMI でテストを行ったところ、同じ問題が発生しました。WMI クエリは 15 秒ほど後に返されます。
また、DriveInfo への呼び出しを別のスレッドに移動することも検討しました。これにより、ユーザー インターフェイスをブロックしないという問題が解決されます。ただし、ユーザーが新しいドライブを接続すると、ドライブ アイコンは 15 秒後にしか表示されないことを意味します。それは理想的ではありません。
助けてくれてありがとう。