3


0

Win7でのVB.NET OpenFileDialogレイテンシー

単一のボタンとその背後にあるこのコードを備えたVBExpress 2008のwinformを使用して、問題を説明します。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles Button1.Click
OpenFileDialog1.ShowDialog()
MsgBox(OpenFileDialog1.FileName)
End Sub

ファイル(この場合は小さなPDF)を選択すると、ファイルを選択してから次のステートメント(この場合はMsgBox)に進むまで3〜6秒の遅延が発生します。

同じファイルをもう一度選択しても、遅延は発生しません。 しかし、プログラムを終了して再起動すると、再び遅延が発生します(1回)。 最初の1つがハングした後、約7〜9回試行され、数秒間「応答なし」と表示されます。 VistaやXPではこの問題はありません。

同じファイルを何度も選択すると、1回目、2回目、および12回目にハングする可能性があります。 クローズプログラムは同じことをもう一度試みます。これは1回目、3回目、および9回目です。 決して同じではありません-まるでリソースを使い果たし、キャッシュをクリアしているように。

遅延中にタスクマネージャーを監視しましたが、異常なものは表示されません。 すべてが正常に動作する新しいコンピューターを使用しています。 多分それは私のノートンインターネットセキュリティだと思っていましたが、それをオフにしたので違いはありませんでした。

誰が私に何が起こっているのか、および/またはどのように遅延の原因をその底まで追跡するのかを教えてくれますか? 私は、問題を切り分けるために知っていることをすべて試しましたが、アイデアが不足しています。 この特定のことに関する他の投稿は見当たりません。

2 Answer


1


[プロジェクト+プロパティ]、[デバッグ]タブで、[アンマネージコードのデバッグを有効にする]にチェックマークを付けます。 プログラムを実行し、VSの[出力]ウィンドウを選択します。 ダイアログを開きます。 [出力]ウィンドウに表示されるのは、アンマネージDLLのスクラップロードがプロセスにロードされることです。

これらは、マシンにインストールされているシェル拡張ハンドラーです。 悪いものは、あなたが質問で説明するように、プログラムに不快な影響を与える可能性があります。 これを制御するには、SysInternalsのAutoRunsユーティリティを使用します。 マイクロソフト製ではないものを無効にすることから始めます。


1


MSDNで提案が出されました-ネットワークケーブルを取り外し、問題が消えるかどうかを確認します。 やった

電源が切れた古いPCに2つのネットワーク接続がありました。 それらを削除し、問題を解決しました。

それでは、質問はvb.net winformsにあります。Win7OpenFileDialogボックス(標準のwinエクスプローラーボックス)をカスタマイズして、休止中のネットワークロケーションによって表示されたり遅延したりすることはありませんか。 または、Win7でこれをどのように防止しますか。 調査し、必要に応じて個別に再投稿します。

Win7を使用していて、ネットワークの場所が休眠している場合、ファイルを選択するときに待ち時間が発生するという警告を出して、アプリケーションを配布したくありません。