写日志的时候怎么实现如果日志文件被打开话的话,程序仍然可以写入? 程序在运行的时候要往日志里记录日志,但是如果正好这个时候日志文件被打开查看程序就会报错,请问怎么解决这个问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 像log4net之类的日志组件的话,你即使带开了日志文件,也可以正常写入,有一定的缓存机制,我没具体看过代码,但楼主可以用用看. 你的日志文件是什么类型的哦?文本的?如txt的或是存数据库的?如果是文本的,那注意一下打开的时候读锁跟写锁的设置 ,如果是数据库的,一般它是直接读的副本,应该不会出现这种问题 我以前写的一个日志文件,写文件的代码如下:你参考一下。文件格式没关系,主要是你写的过程public void WriteToFile() { while (!Stopped) { if (MsgQueue.Count == 0) { Thread.Sleep(50); continue; } string strMsg = ""; lock (MsgQueue.SyncRoot) { strMsg = System.Convert.ToString(MsgQueue.Dequeue()); } StreamWriter writer = new StreamWriter(FileName, true); writer.WriteLine(strMsg); writer.Close(); } } 应该不会啊,你是用什么打开的?notepad?这个打开就跟文件脱离关系了,它是往内存里加的 新人求助,关于C#向ORACLE上传和下载文件,急 求一個圖形,用雙for循環 C# 关于for语句和foreach语句的问题,急!散分啦 webbrowser自动提交以后不能正确显示跳转的页面 求助:存储过程条件查询有问题! 蓝牙连线检查问题 问一个性能的问题:关于css属性中clip。。。请大家都进来看看哦! 求教!!找了半天都不知道什么错误? StreamWrite 写入TXT文件时,好像有一个行数上限,总是不能写全,请高手指教 急问,c#程序不能调试 如何实现水晶报表中的bool值的CheckBox的显示? 需要一个正则
文本的?如txt的或是存数据库的?如果是文本的,那注意一下打开的时候读锁跟写锁的设置 ,
如果是数据库的,一般它是直接读的副本,应该不会出现这种问题
public void WriteToFile()
{
while (!Stopped)
{
if (MsgQueue.Count == 0)
{
Thread.Sleep(50);
continue;
}
string strMsg = "";
lock (MsgQueue.SyncRoot)
{
strMsg = System.Convert.ToString(MsgQueue.Dequeue());
}
StreamWriter writer = new StreamWriter(FileName, true);
writer.WriteLine(strMsg);
writer.Close();
}
}