代码如下,请各位大哥指点!
private static object m_ctx = new object();private static void F_Write(string _info)
{
try
{
lock(m_ctx)
{
if(!Directory.Exists("log"))
{
Directory.CreateDirectory("log");
}
FileInfo _fileInfo = new FileInfo(P_FileName);
//如果所指定的文件名不存在,则以些文件名新建一个日志文件。
if (!_fileInfo.Exists)
{
//创建一个日志文件用于记录。
using (StreamWriter _streamWriter = _fileInfo.CreateText())
{
_streamWriter.WriteLine(DateTime.Now.ToString() + " " +"成功创建日志!");
}
}
//写入日志信息。
using (StreamWriter _streamWriter = _fileInfo.AppendText())
{
_streamWriter.WriteLine(_info);
}
}
}
catch(Exception ex)
{
MessageBox.Show("写入日志失败! At EventLog.F_Write()\n" + ex.ToString());
}
}
异常经常出在using (StreamWriter _streamWriter = _fileInfo.AppendText()) 这句。
private static object m_ctx = new object();private static void F_Write(string _info)
{
try
{
lock(m_ctx)
{
if(!Directory.Exists("log"))
{
Directory.CreateDirectory("log");
}
FileInfo _fileInfo = new FileInfo(P_FileName);
//如果所指定的文件名不存在,则以些文件名新建一个日志文件。
if (!_fileInfo.Exists)
{
//创建一个日志文件用于记录。
using (StreamWriter _streamWriter = _fileInfo.CreateText())
{
_streamWriter.WriteLine(DateTime.Now.ToString() + " " +"成功创建日志!");
}
}
//写入日志信息。
using (StreamWriter _streamWriter = _fileInfo.AppendText())
{
_streamWriter.WriteLine(_info);
}
}
}
catch(Exception ex)
{
MessageBox.Show("写入日志失败! At EventLog.F_Write()\n" + ex.ToString());
}
}
异常经常出在using (StreamWriter _streamWriter = _fileInfo.AppendText()) 这句。
解决方案 »
- 帮帮忙啦!
- 由于泛型函数xx预先不知道T是什么类型的对象,所以调用xx时,当T为string对象时,像这样的句子“y=a.Length”就不能在泛型函数体中使用,有什么通用办法解决吗?请看代码:
- 代码求助:功能是根据不同的值调用不同的页面
- 请教类库中的注释问题.
- myblog beta2测试,完全兼容msn皮肤,首页拖动排位...
- 求助大虾 进来看看这个问题
- toolbar.buttons如何感应到鼠标hover?
- 在axWebBrowser1中如何点击由asp.net程序中DataGrid表单生成的链接?
- c#中iframe网页框架问题,求解,急!
- 向高手请教,在.NET下的与COM互操作的问题,急!!!!!
- duwamish的一个问题,大家共参
- 得到方法/函数名
异常经常出在using (StreamWriter _streamWriter = _fileInfo.AppendText()) 这句。private static object m_ctx = new object();private static void F_Write(string _info)
{
try
{
lock(m_ctx)
{
if(!Directory.Exists("log"))
{
Directory.CreateDirectory("log");
}
FileInfo _fileInfo = new FileInfo(P_FileName);
//如果所指定的文件名不存在,则以些文件名新建一个日志文件。
if (!_fileInfo.Exists)
{
//创建一个日志文件用于记录。
using (StreamWriter _streamWriter = _fileInfo.CreateText())
{
_streamWriter.WriteLine(DateTime.Now.ToString() + " " +"成功创建日志!");
}
}
//写入日志信息。
using (StreamWriter _streamWriter = _fileInfo.AppendText())
{
_streamWriter.WriteLine(_info);
}
}
}
catch(Exception ex)
{
MessageBox.Show("写入日志失败! At EventLog.F_Write()\n" + ex.ToString());
}
}
猜想楼主可能使用了多线程
应该线程没有管理好,或者调试的时候有线程没有结束想试出楼主的多线程的错误,可是没有成功 -_-"~~还有建议:
对于这样try,catch
在最后最好使用finally做后处理
比如writer,connect的关闭放在这里
也可以楼主用了using (StreamWriter _streamWriter = _fileInfo.AppendText()
但是两者在抛出异常时有没有差异?我不知道
觉得finally好一些:)
不知道其它大哥有什么好建议没有?
我试了半天都没有试出来...
只有出现想不到的异常,而且估计要看机遇....
随机,看看楼主的运气如何了
捕捉异常的能力怎么样了...:P想想,不是你程序的错误
可能同一个运行了多个你的程序
(或者你的其他程序正在访问你的错误日志文件)
互斥体在多个AppDomain中不能起作用的
我的解决意见是
private static void F_Write(string _info)
{
try
{
if(!Directory.Exists("log"))
{
Directory.CreateDirectory("log");
} FileInfo _fileInfo = new FileInfo(P_FileName);
string strTemp="";
//如果所指定的文件名不存在,则以些文件名新建一个日志文件。
if (!_fileInfo.Exists)
{
strTemp=DateTime.Now.ToString() + " " +"成功创建日志!";
}
_fileInfo.AppendText().Close();
//写入日志信息。
using (StreamWriter _streamWriter = _fileInfo.AppendText())
{
if(strTemp!="")
_streamWriter.WriteLine(strTemp);
_streamWriter.WriteLine(_info);
}
}
catch(Exception ex)
{
MessageBox.Show("写入日志失败! At EventLog.F_Write()\n" + ex.ToString());
}
}
请尝试我给出的代码,有问题请回复我
我已经把代码改成你给的那段,可以生成日志,不过要运行几天瞧瞧,但愿删掉上面那句后可以一切正常。谢谢。
private static void F_Write(string _info)
{
mtx.WaitOne();
try
{
if (!Directory.Exists("log"))
{
Directory.CreateDirectory("log");
} FileInfo _fileInfo = new FileInfo(P_FileName); //如果所指定的文件名不存在,则以些文件名新建一个日志文件。
if (!_fileInfo.Exists)
{
//创建一个日志文件用于记录。
using (StreamWriter _streamWriter = _fileInfo.CreateText())
{
_streamWriter.WriteLine(DateTime.Now.ToString() + " " + "成功创建日志!");
}
} //写入日志信息。
using (StreamWriter _streamWriter = _fileInfo.AppendText())
{
_streamWriter.WriteLine(_info);
}
}
catch (Exception ex)
{
MessageBox.Show("写入日志失败! At EventLog.F_Write()\n" + ex.ToString());
}
mtx.ReleaseMutex();
}
private static void F_Write(string _info)
{
mtx.WaitOne();
try
{
if (!Directory.Exists("log"))
{
Directory.CreateDirectory("log");
} FileInfo _fileInfo = new FileInfo(P_FileName); //如果所指定的文件名不存在,则以些文件名新建一个日志文件。
if (!_fileInfo.Exists)
{
//创建一个日志文件用于记录。
using (StreamWriter _streamWriter = _fileInfo.CreateText())
{
_streamWriter.WriteLine(DateTime.Now.ToString() + " " + "成功创建日志!");
}
} //写入日志信息。
using (StreamWriter _streamWriter = _fileInfo.AppendText())
{
_streamWriter.WriteLine(_info);
}
}
catch (Exception ex)
{
MessageBox.Show("写入日志失败! At EventLog.F_Write()\n" + ex.ToString());
}
mtx.ReleaseMutex();
}