2

.NET 3.5 でファイル マネージャーを作成しています。起動時に、アプリケーションは利用可能なドライブを列挙する必要があります。そのために DriveInfo.GetDrives を使用しています。

残念ながら、私のユーザーは、ネットワーク ドライブを切断すると、アプリケーションの起動に約 30 秒かかると嘆いていました。

ネットワーク ドライブが切断されていると、GetDrives() 関数が数秒間ハングすることがわかりました。そしてUIがフリーズします。これは、起動時と、新しいドライブを接続するたびに発生します。

要約すると、切断されたネットワーク ドライブがある場合でも、すぐに復帰する使用可能なドライブを列挙する方法が必要です。助けてくれてありがとう。

追加情報:

  1. WMI でテストを行ったところ、同じ問題が発生しました。WMI クエリは 15 秒ほど後に返されます。

  2. また、DriveInfo への呼び出しを別のスレッドに移動することも検討しました。これにより、ユーザー インターフェイスをブロックしないという問題が解決されます。ただし、ユーザーが新しいドライブを接続すると、ドライブ アイコンは 15 秒後にしか表示されないことを意味します。それは理想的ではありません。

助けてくれてありがとう。

4

1 に答える 1

0

ブロッキングを回避する方法がないのではないかと心配しています。これは、WindowsAPIのネットワーク/ファイルのタイムアウトが原因です。

于 2009-10-23T09:56:29.910 に答える