我在代码中进行了一个简单的测试,如下所示:
try
{
File.Open(path);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
path
是上面声明的字符串。按下按钮时调用此例程,并且第一次调用它时,它“正常工作”(引用,因为虽然它不会抛出异常,但文件永远不会打开/显示)。第二次按下时,抛出以下异常:
System.IO.IOException:进程无法访问该文件,因为它正由另一个进程使用。
但是,该文件实际上从未打开过。我用任务管理器监视它,并且没有展示该文件的任何实例。
我尝试使用using (File.Open(path)) {}
,但没有成功。
有谁能够帮我?这似乎是我正在做的一个基本错误,但我找不到它。
UPDATE
LasseVågsætherKarlsen提供了正确的答案,指出我的错误实际上是关于概念,而不是代码。谢谢!
我想你误解了File.Open
的作用。
此方法将打开文件以供程序读取。换句话说,该方法将返回一个Stream
对象,您可以使用该对象来读取和写入该文件。
在该操作结束时,你必须关闭它,这是using
会为你做的。
但是,我猜这不是你想要做的。你一直提到文件没有打开,你正在使用任务管理器来查找文件,而不是看到它。
你想要Process.Start
。您正在尝试打开另一个可执行文件,例如notepad.exe
,或者您正在尝试打开文档,例如readme.txt
,这就是为什么您没有使用调用该方法的结果,以及您使用任务管理器的原因寻找它。
因此,假设您仍想捕获异常,那么您应该这样做:
try
{
Process.Start(path);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}