多线程中 
 XmlDocument x=   XmlDocument.Load(xmlFile);         安全吗?创建的 XmlDocument 对象怎么显示释放?

解决方案 »

  1.   

    http://blog.sina.com.cn/s/blog_4e15bf4101000btv.html
      

  2.   

    XmlDocument.Load不是静态方法,不能这样用吧,XmlDocument x=new  XmlDocument; x.Load(xmlFile);在多线程中安全,如果多线程同时访问同一个文件,可能会抛出异常,处理一下就可以了,
      

  3.   

    XmlDocument 对象内部不包括非托管资源,释放起来很简单,系统会自动回收,如果想加快回收,可以这样:XmlDocument x=new XmlDocument();\
    x.Load(xmlFile);...x.RemoveAll();
    x=null;如果还嫌不够快,可以再执行一句:CG.Collect();
      

  4.   

    加载的时候来处理下多线程,而不是直接用newpublic static MyXmlFileLoader{
       public static XmlDocument LoadMyXmlFile(){
          lock(...){
              XmlDocument x = new XmlDocuemnt();
              x.Load(xmlFile);
          }
       }
    }
      

  5.   

    或者是把操作xmldocument的操作都委托给一个单例模式的类public class MyXmlFile{
       private static MyXmlFile _myXmlFile = new MyXmlFile();
       private MyXmlFile();
       public MyXmlFile Instance{
          get{return _myXmlFile;}
       }   public string GetName(){lock(){}}
       public string WriteName(){
           lock(){}
       }
    }