这个说明你的XML文件有别的进程的访问,所以你不能加载
请要确认你是不是有其他进程或线程在对它进行操作,如果没有,那你要确认你的上一次对它在程序中操作后是否关闭,就是调用了stream.close()函数!!

解决方案 »

  1.   

    每次加载后都用了dispose(),是多线程操作引发的,程序里用了一个线程池来循环执行一些对xml操作的代码
      

  2.   

    设备是八路的,要同时记录八路设备操作后的各项状态,只要有一个状态值改了就得改xml里的属性
      

  3.   

    请问对xml文件的操作除了save还可以用别的方式保存吗?
      

  4.   

    这个的确是可以。
    lock()一下就好了 不知道是不是楼主的意思
      

  5.   

    你这边在处理XML时只能是单线程的
    1种做法是将此部分LOCK掉,但这样的后果导致其他线程卡在LOCK这,导致性能下降很多。
    另一种是将XML片段载入到一个静态的XMLDOCUMENT属性中,其他线程只对这个XMLDOCUMENT进行操作。
      

  6.   

    可以多线程先在内存里操作
    每次操作用lock,最后再写入文件
      

  7.   

    记得
    using(FileStream fs = new FileStream(...))
    {
      ..  FileStream.Close();
    }
      

  8.   

    这个方法没试过,lock用过不理想,能再说的详细点吗?是建立一个公共的XMLDOCUMENT程序的每个需要改变的东西都先存到这里,最后在线程的一个地方统一去执行save操作吗?
      

  9.   

    、是建立一个公共的XMLDOCUMENT程序的每个需要改变的东西都先存到这里,最后在线程的一个地方统一去执行save操作吗?
    这个想法可行
      

  10.   

    如果要锁定方式
    那就用Stream.Synchronized(fs);
      

  11.   

    对xml的读写放到一个地方,然后加锁,避免多线程冲突。
      

  12.   

    这个问题我也碰到过,后来就解决了;你把xml操作的都放在一个函数里,操作完后就把资源都给释放了;同时加上线程同步锁,这样一次只有一个线程在操作xml文件,并且每次操作完就释放了资源,下次操作时就不会再冲突了