问题出在最后一行,在执行Remove方法时,会提示目录正在被使用的异常,但我看不出哪里在使用。
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForAssembly())
{
store.CreateFile("TestFileA.txt");
store.CreateFile("TestFileB.txt");
store.CreateFile("TestFileC.txt");
store.CreateFile("TestFileD.txt");
}
IEnumerator allFiles = IsolatedStorageFile.GetEnumerator(IsolatedStorageScope.User);
long totalSize = 0;
while (allFiles.MoveNext())
{
IsolatedStorageFile storeFile = (IsolatedStorageFile)allFiles.Current;
totalSize += (long)storeFile.UsedSize;
}
Console.WriteLine("总大小:{0}", totalSize);
Console.WriteLine("按任意键结束..");
IsolatedStorageFile store2 = IsolatedStorageFile.GetUserStoreForAssembly();
store2.Remove();
using(var stream = store.CreateFile("TestFileA.txt"))
{
}
明白了,我知道是怎么回事了,我把using错以为会将代码段里的所有资源释放。
估计是有文件在用吧,https://msdn.microsoft.com/en-us/library/7ay840d1(v=vs.110).aspx官方的说明 If any of the directories or files in the store are in use, the removal attempt for the store fails and the store is marked for removal. Any subsequent attempts to modify the store throw an IsolatedStorageException.
使用sysinternal工具包中的procmon可以看看到底都是谁在使用这个目录
还是没搞明白。直接运行移除的代码能够陈宫,但是先执行创建文件,然后马上执行移除代码就会报错,创建文件时用的using也应该把创建时占用的资源释放了,为什么还是不行能?!
虽然没有解决问题,但你提到的工具很新鲜。