他们出错的原因是在同一时间点同时对XML文件操作,一个读,一个写,所以才会出错。

解决方案 »

  1.   

    死锁是说的多线程,这个属于进程之间协调
    在你实例化的时候操作xml这个类的对象时,要在构造函数里加上this.KillProcess();
    在dispose的时候也要加上this.KillProcess();
    下面的例子是操作EXCEL的        /// <summary>
            /// 用Process方法结束Excel进程
            /// </summary>
            public void KillExcelProcess()
            {
                Process[] myProcesses;
                DateTime startTime;
                myProcesses = Process.GetProcessesByName("EXCEL");            //得不到Excel进程ID,判断进程启动时间
                foreach (Process myProcess in myProcesses)
                {
                    startTime = myProcess.StartTime;                if (startTime > beforeTime && startTime < afterTime)
                    {
                        myProcess.Kill();
                    }
                }
            }
      

  2.   

    楼主不是知道要使用lock了吗 那就用起来在对xml文件进行操作时 把对象lock起来 然后进行操作 
    lock(xml文件对象)
    {
         //对xml文件的操作      //最后关闭资源
    }
      

  3.   

    我的是两个系统,一个系统生成XML,另一个系统通过远程连接进行读取的,所以出现了同一时间点又读又写的情况
      

  4.   

    本人最近在用多线程做个项目,有点想法可以跟你分享。如果你访问XML的多个线程是同一个方法的话,用lock,如果线程间用的是不同的方法,他们互斥访问XML用Mutex类