2012-03-30 4 views
0

使用可能なメモリの制限:次のコードを実行するときOpenFileDialogが

OpenFileDialog dialog = new OpenFileDialog(); 
DialogResult result = dialog.ShowDialog(); 
string filename = ""; 
if (result == DialogResult.OK) 
{ 
    filename = dialog.FileName; 
    //create a new Thread and read the file. 
} 
else 
{ 
    return; 
} 

を私は奇妙なメモリの動作に直面しています:メモリ使用量が710メガバイトまで非常に速い上がり、それはバイトごとのアップをfloatatingを開始710MBに近づき、最後にOutOfMemoryExceptionが発生します。

しかし、私は単純にファイルパスをハードコーディングすることにより、OpenFileDialogのないコード、実行した場合:メモリはesitationsずに840メガバイトまで上昇し、GETファイル:

string filename = "_complete_file_path_here"; 
//create a new Thread and read the file. 

をそれは問題なく動作します正しく読んでください。

アイデアやフィードバックはありますか?

+0

別のコンピュータでテストして、Open Fileダイアログにフックしてそれらをホースしているサードパーティのアプリケーションではないことを確認しましたか? –

+0

はい、3種類のラップトップで試しました。 –

+0

すべて正しく表示されます。おそらく悪い質問ですが、ダイアログのファイル名がハードコードされたファイル名と同じであることを確認してください。 – riv333

答えて

0

この種の問題は、不適切なシェル拡張によって引き起こされる可能性があります。 Process Explorerまたはデバッガの出力を使用して、[ファイルを開く]ダイアログを使用するときに、プロセスにロードされるDLLを確認します。疑わしいものが見つかった場合は、関連するソフトウェアをアンインストールしてみてください。 (プリンターは何らかの理由でしばしばここでの犯人です)。

なぜなら、ファイルを開くダイアログではWindowsエクスプローラのシェル拡張が読み込まれるためです。残念ながら、サードパーティの多くはバグです。

+0

よろしくお願いいたします。ありがとうございました。 –

関連する問題