如何知道IsolatedStorage中的文件是否已打开
本文关键字:是否 文件 何知道 IsolatedStorage | 更新日期: 2023-09-27 17:54:14
我使用IsolatedStorageFile
类的DeleteFile方法从IsolatedStorage中删除文件。有时这个方法会抛出IsolatedStorageException
。我提到的MSDN页面说,当"目标文件打开或路径不正确"时抛出此异常。
为了检查文件是否真的存在,我可以在调用DeleteFile
方法之前调用IsolatedStorageFile.FileExists
方法。
但是我怎么知道我要删除的文件是否打开?我想知道它,因为这可能是我得到异常的原因。
更新1:我正在尝试运行我的应用程序的多个实例。
显然,您正在使用应用程序的多个实例同时打开隔离存储中的文件,并试图删除该文件。这就是你的问题。如果应用程序的另一个实例打开了该文件,则不能删除该文件。
你可以这样做:
- 使用互斥锁进行进程间同步,请参阅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.
}