StreamWriter IO 异常 - 另一个进程使用的文件
StreamWriter IO Exception - file used by another process
我的代码有一个大问题,我总是遇到 IO 异常,我不知道为什么...我使用 StreamWriter...
internal void SaveOwner(Owner o)
{
StreamWriter w = new StreamWriter(path, true);
if (o != null)
w.WriteLine(o.ToFileString());
w.Close();
}
请问谁能帮助我,我不知道我已经尝试了所有我知道的..!?
它总是说其他进程使用该文件。
IO 异常 - 另一个进程使用的文件
在调用方法之前,我询问是否 o != null
代码在 C# 中
您应该将调用包装在 using
块中,以便在适当的时间处理对象。
internal void SaveOwner(Owner o)
{
using(StreamWriter w = new StreamWriter(path, true))
{
if (o != null)
{
w.WriteLine(o.ToFileString());
}
}
}
我认为这是由于多线程引起的,因为我能够通过它重现您的问题。
您可以简单地包装一个锁(使用静态对象。)并且看在上帝的份上使用 using
关键字来包装您的流。
static object syncRoot = "";
...
void SaveOwner(Owner o)
{
lock (syncRoot)
{
using (StreamWriter w = new StreamWriter(path, true))
{
if (o != null)
w.WriteLine(o.ToFileString());
}
}
}
我的代码有一个大问题,我总是遇到 IO 异常,我不知道为什么...我使用 StreamWriter...
internal void SaveOwner(Owner o)
{
StreamWriter w = new StreamWriter(path, true);
if (o != null)
w.WriteLine(o.ToFileString());
w.Close();
}
请问谁能帮助我,我不知道我已经尝试了所有我知道的..!? 它总是说其他进程使用该文件。 IO 异常 - 另一个进程使用的文件 在调用方法之前,我询问是否 o != null
代码在 C# 中
您应该将调用包装在 using
块中,以便在适当的时间处理对象。
internal void SaveOwner(Owner o)
{
using(StreamWriter w = new StreamWriter(path, true))
{
if (o != null)
{
w.WriteLine(o.ToFileString());
}
}
}
我认为这是由于多线程引起的,因为我能够通过它重现您的问题。
您可以简单地包装一个锁(使用静态对象。)并且看在上帝的份上使用 using
关键字来包装您的流。
static object syncRoot = "";
...
void SaveOwner(Owner o)
{
lock (syncRoot)
{
using (StreamWriter w = new StreamWriter(path, true))
{
if (o != null)
w.WriteLine(o.ToFileString());
}
}
}