我正在用代码做一个简单的测试,如下所示:
try
{
File.Open(path);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
path
是上面声明的字符串。该例程在按下按钮时被调用,并且在第一次被调用时,它将“正常工作”(用引号引起来,因为尽管它不会引发异常,但从不打开/显示文件)。第二次按下时,将引发以下异常:
System.IO.IOException:该进程无法访问文件,因为它正在被另一个进程使用。
但是,该文件实际上从未打开过。我使用任务管理器对其进行监视,并且从未显示过该文件的实例。
我尝试使用using (File.Open(path)) {}
,但没有成功。
有人可以帮助我吗?这似乎是我正在做的一个基本错误,但我找不到它。
更新
拉瑟·沃格瑟·卡尔森(LasseVågsætherKarlsen)提供了正确的答案,并指出我的错误实际上与概念有关,而不是代码。谢谢!
答案 0 :(得分:2)
我认为您误解了eol
的作用。
此方法将打开文件以供程序读取 。换句话说,该方法将返回一个for /F
对象,您可以使用该对象读取和写入该文件。
该操作结束时,您必须将其关闭,这就是File.Open
会为您执行的操作。
但是,我猜测这不是您想要执行的操作。您经常提到该文件无法打开,并且您正在使用任务管理器来查找该文件,而不是看到它。
您想要Stream
代替。您试图打开另一个可执行文件,例如using
,或者试图打开一个文档,例如Process.Start
,这就是为什么您不使用调用该方法的结果的原因,并且为什么要使用任务管理器来查找它。
因此,假设您仍然想捕获异常,这就是您应该做的:
notepad.exe