现在流能成功的写入,不过,每次写完流都要关闭才行。当我再次使用用流的时候,它就会出错
StreamWriter sw = new StreamWriter(filepath);
sw.WriterLine("ErrorLog.....");
sw.Close();
这样写是没有问题的,但是当我下次再次使用的时候,它说:“无法打开一个关闭的流”
我想是不是StreamWriter是不是有一个能打开流的方法。我现在不是很清楚,向大家请教
StreamWriter sw = new StreamWriter(filepath);
sw.WriterLine("ErrorLog.....");
sw.Close();
这样写是没有问题的,但是当我下次再次使用的时候,它说:“无法打开一个关闭的流”
我想是不是StreamWriter是不是有一个能打开流的方法。我现在不是很清楚,向大家请教
如果不想关闭,那就也不要new,再次再使用的时候,只要得到上次打开的那个流对象就可以了。
2.我的主程序中有2个子线程,我听几位高手说可以重新New一个StreamWriter,我就尝试了一下,那么它现在是编译都不能通过了,说StreamWriter不能定义在线程的函数中,这样它会变成另外的意思;
3.如果说让我得到上次打开流的对象,那么,我每次用的StreamWriter都不是上次的就应该不会出错。
程序比较复杂,代码不方便发。就简单写点
//全局的SW
StreamWriter sw = new StreamWriter(filepath);
btnClick(Sender object,Event args)
{
Thread _trd = new Thread(new ThreadStart(fun));
_trd.IsBackgourd;
_trd.Start();
Timer.Start();
....
sw.WriteLine("ErrorLog...");
//sw.Close();这里一旦关闭下面就用不了了 .....
Thread _trd1 = new Thread(new ThreadStart(fun1));
_trd1.IsBackgound;
_trd1.Start();
....
sw.WriteLine("ErrorLogOther.....");
//sw.Close();不能关闭
}
void fun()
{
....
sw.WriteLine("Log1....");
//sw.Close();这里是第二个使用StreamWriter,也不能关闭
}
void fun1()
{
....
sw.WriteLine("Log2....");
//sw.Close();不能关,下面还有
}
//这就是那个计时器空间Timer的事件
TimerActvie(Sender object,Event args)
{
if(_trd.IsAlive)
{
.....
}
Timer.Stop();
//_trd1不判断,这里应该是主线程UI线程吧。
sw.WriteLine("Log3....");
sw.Close();
//这个时候关闭流了,因为下面不再使用流,但是当我重新使用这个流时(这个应用程序没有关闭情况下,流还是关闭的)那么,这些sw一个都不能用了。
}
如果你怕不关闭,内容不会写到磁盘
你调用Flush就可以了,它就会写到磁盘了。
using(StreamWriter sw = new StreamWriter(filepath))
{
sw.WriterLine("ErrorLog.....");
}
然后就不用关闭流了。