如何知道IsolatedStorage中的文件是否已打开

本文关键字:是否 文件 何知道 IsolatedStorage | 更新日期: 2023-09-27 17:54:14

我使用IsolatedStorageFile类的DeleteFile方法从IsolatedStorage中删除文件。有时这个方法会抛出IsolatedStorageException。我提到的MSDN页面说,当"目标文件打开或路径不正确"时抛出此异常。

为了检查文件是否真的存在,我可以在调用DeleteFile方法之前调用IsolatedStorageFile.FileExists方法。

但是我怎么知道我要删除的文件是否打开?我想知道它,因为这可能是我得到异常的原因。


更新1:我正在尝试运行我的应用程序的多个实例。

如何知道IsolatedStorage中的文件是否已打开

显然,您正在使用应用程序的多个实例同时打开隔离存储中的文件,并试图删除该文件。这就是你的问题。如果应用程序的另一个实例打开了该文件,则不能删除该文件。

你可以这样做:

  • 使用互斥锁进行进程间同步,请参阅MSDN并与其他应用程序实例检查是否可以删除文件。
  • 只允许运行应用程序的一个实例(尽管您明确表示需要多个实例,但您可能需要重新考虑)
  • 为每个应用程序实例使用单独的文件

使用哪种解决方案取决于应用程序的工作方式和文件的用途。

EDIT:您不能在删除文件之前检查文件是否已打开,因为文件可能在检查和删除之间被另一个应用程序实例打开。

If(!FileIsOpen(path))
{
    // here, another application may open the file
    DeleteFile(path); // oops
}

可以做的是:

try
{
    DeleteFile(path);
}
catch(IsolatedStorageException)
{
    // do nothing; let the other instances try and delete the file.
}