Vs2010 C#调用openfiledialog,第一次可以正常读取文件,以后每次都可以打开对话

Vs2010 C#调用openfiledialog,第一次可以正常读取文件,以后每次都可以打开对话框,打开后也可以取消,但一点确定就在if(dialog.showdialog()==dialogresult.ok)报错,尝试读取或写入受保护的内存。点继续后再打开就报外部组件错误然后自己退出。重新建一个空项目操作对话框就没有这个问题。

这有可能跟你打开文件后的代码有关 , 你在打开后 这个文件的属性就变为了只读属性,你如果再次通过 OpenFileDialog选择这个文件进行操作 就会导致 造成 尝试读取或写入受保护的内存 试试选择其它文件试下追问

解决了,打开文件后只调用dispose()没调用close()导致的

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-29
报外部组件错误,你的程序是用到什么第三方的组件了么?追问

用到了krypton suit, sapi5.1 ,direct sound,oledb.12.0。都运行正常, 就if(dialog.showdialog()==dialogresult.ok)每次第二次点确定就卡在这里了,用管理员身份运行或者兼容xp方式运行也不行。

追答

if(dialog.showdialog()==dialogresult.ok)这个条件成立时执行的代码与krypton suit, sapi5.1 ,direct sound,oledb.12.0有关吧?组件有BUG这个只能是改组件,或在执行一次后销毁组件,或GC回收一下看看有没有用

Vs2010 C#调用openfiledialog,第一次可以正常读取文件,以后每次都可 ...
这有可能跟你打开文件后的代码有关 , 你在打开后 这个文件的属性就变为了只读属性,你如果再次通过 OpenFileDialog选择这个文件进行操作 就会导致 造成 尝试读取或写入受保护的内存 试试选择其它文件试下

相似回答
大家正在搜