关于ResourceWriter文件占用问题
- C# code
private bool writeInResources() { IResourceWriter writer = null; try { writer = new ResourceWriter(@"myResources.resources"); writer.AddResource("day1", Constant.arrayMon); writer.AddResource("day6", Constant.arraySat); writer.AddResource("day7", Constant.arraySun); writer.AddResource("day5", Constant.arrayFri); writer.AddResource("day4", Constant.arrayThurs); writer.AddResource("day3", Constant.arrayWed); writer.AddResource("day2", Constant.arrayTues); } catch (Exception e) { MessageBox.Show(e.Message); return false; } finally { if(writer !=null) writer.Close(); } return true; }
为什么经常抛出这样的异常:
文件“E:\visualstudio\SBMProj\SBMProj\bin\Debug\myResources.resources”正由另一进程使用,因此该进程无法访问此文件
以下是读的
- C# code
private List<int> readOutResources() { ResourceManager rm = null; List<int> l = null; try { rm = ResourceManager.CreateFileBasedResourceManager("myResources", "/", null); if (rm == null) return null; l = rm.GetObject("day" + dayOfWeek.ToString()) as List<int>; } catch (Exception e) { return null; } return l;
再也没有其他地方使用了,有时候写正常,有时候写就抛那个异常,为什么啊
[解决办法]
你用 release 测试一下,不知道有没有多线程。推测是 .net debug 影响了。
[解决办法]
加个lock试试
[解决办法]
因为文件被锁定啦,嘿嘿~~喵乌~
[解决办法]
建议不用close,改用try finally {dispose试试}