StreamWriter IO异常-文件被另一个进程使用

本文关键字:另一个 进程 文件 IO 异常 StreamWriter | 更新日期: 2023-09-27 18:09:01

我的代码有一个大问题,我总是得到IO异常,我不知道为什么…我使用StreamWriter…

    internal void SaveOwner(Owner o)
    {
        StreamWriter w = new StreamWriter(path, true);
        if (o != null)
            w.WriteLine(o.ToFileString());
        w.Close();
    }

请任何人帮助我,我不知道我已经尝试了我所知道的一切…?它总是说另一个进程使用该文件。IO异常-文件被另一个进程使用在我调用方法之前,我问如果0 != null

代码是c#

StreamWriter IO异常-文件被另一个进程使用

我认为这是由于多线程导致的,因为我能够通过它重现您的问题。

抛出异常

你可以简单地包装一个锁(使用一个静态对象),看在上帝的份上,使用using关键字来包装你的流。

static object syncRoot = "";
...
void SaveOwner(Owner o)
{
    lock (syncRoot)
    {
        using (StreamWriter w = new StreamWriter(path, true))
        {
            if (o != null)
                w.WriteLine(o.ToFileString());
        }
    }
}

您应该将调用包装在using块中,以便在适当的时间处理对象。

internal void SaveOwner(Owner o)
{
    using(StreamWriter w = new StreamWriter(path, true))
    {
       if (o != null)
       {
          w.WriteLine(o.ToFileString());
       }
    }
}