执行以下代码时:
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 MB,然后它开始逐字节地上下浮动接近710MB,最后我得到一个OutOfMemoryException。
但是,如果我在没有OpenFileDialog的情况下运行代码,只需对文件路径进行硬编码:
string filename = "_complete_file_path_here";
//create a new Thread and read the file.
它可以毫无问题地运行:内存上升到840 MB,没有请求,文件也能正确读取。
任何想法或反馈?
答案 0 :(得分:0)
这种问题可能是由于shell扩展错误造成的。使用Process Explorer或调试器输出来检查在使用“文件打开”对话框时加载到进程中的DLL。如果您发现任何可疑内容,请尝试卸载相关软件。 (打印机出于某些原因通常是罪魁祸首。)
原因是文件打开对话框加载了Windows资源管理器外壳扩展,不幸的是许多第三方扩展程序都有错误。