net 读取文件“C:\McsServerIni.xml”正由另一进程使用,因此该进程无法访问此文件。

阿狸Ahri 2018-01-20 06:09:52
是这样的,我写了一个 基类,里面有一个读取xml的方法,只是读取,没有写入


//读取主的单个配置
private string ReadBaseInfo(string funType)
{
XmlDocument xml = new XmlDocument();
xml.Load(path);
XmlNode tmp = xml.SelectSingleNode("Main").SelectSingleNode("BaseInfo");
if (tmp == null)
{
return "";
}
if (tmp.Attributes[funType] != null)
{
return tmp.Attributes[funType].Value;
}
return "";
}


然后有好几个类,都继承这个基类,然后去用这个方法。

然后这些基类都是开线程的。每一个线程每隔1秒钟就会读取一次这个xml文件。

然后单纯读取是没有问题的

但是如果我手动在外面打开这个xml文档,然后点击修改,然后保存。前面几次没问题。

但是修改多了,就报这个错误了、然后服务就关闭了。

这个怎么处理呢



...全文
631 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LvBao_117 2018-01-21
  • 打赏
  • 举报
回复
手工操作的同时,程序也在操作,这样不好吧。用try catch试试
  • 打赏
  • 举报
回复
没有什么可“处理”的,(对于 Release 版本而不是 DEBUG 版本)在你的应用程序的表现层统一地捕获错误并且给用户一个提示就行了。程序在 Release 下运行时会遇到许多问题,比如说突然这个文件被改名了(Remove了),你自然只能通用地对待。
秋的红果实 2018-01-20
  • 打赏
  • 举报
回复
如果手动修改是必要的,那么,读取文件前要判断文件是不是已经打开 判断文件是不是打开,请参考:http://www.jb51.net/article/65561.htm 另外,多线程读取一个文件,需要加上lock

object locker=new object(); 
  ....................
  lock(locker)
  {
    读取文件;
  }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧