我用如下方法:把一个对象序列化到一个文件。
// Serialize the inO3WHeadBean
if (inO3WHeadBean != null)
{
writer = new StreamWriter(inO3WheadFile, false, Encoding.GetEncoding("SHIFT-JIS"));
ser = new XmlSerializer(inO3WHeadBean.GetType());
ser.Serialize(writer, inO3WHeadBean);
writer.Close();
}但当重复调用这个函数时,提示文件inO3WheadFile被另一个进程使用,我现在如何确切的知道是哪个进程使用?(我通过捕获异常无法知道确切的是哪个进程正在使用)或者如果我能强制地关闭其他进程的访问也可以,这个如何实现?高人指点一下

解决方案 »

  1.   

    代码代成:
    // Serialize the inO3WHeadBean
    // 保证文件不会被长期占用
    if (inO3WHeadBean != null)
    {
    try{
    writer = new StreamWriter(inO3WheadFile, false, Encoding.GetEncoding("SHIFT-JIS"));
    ser = new XmlSerializer(inO3WHeadBean.GetType());
    ser.Serialize(writer, inO3WHeadBean);
    }
    finally{
    writer.Close();
    }
    }找不到是哪个进程的话,重启计算机,就好了...
      

  2.   

    up...
    感觉不是这句‘writer.Close();'的原因。
      

  3.   

    路过,我也不会,不过请问Sunmast兄: if (inO3WHeadBean != null)
    {
    writer = new StreamWriter(inO3WheadFile, false, Encoding.GetEncoding("SHIFT-JIS"));
    ser = new XmlSerializer(inO3WHeadBean.GetType());
    ser.Serialize(writer, inO3WHeadBean);
    writer.Close();
    }

    if (inO3WHeadBean != null)
    {
    try{
    writer = new StreamWriter(inO3WheadFile, false, Encoding.GetEncoding("SHIFT-JIS"));
    ser = new XmlSerializer(inO3WHeadBean.GetType());
    ser.Serialize(writer, inO3WHeadBean);
    }
    finally{
    writer.Close();
    }
    }
    有区别吗?