/// <summary>
/// 异步保存
/// </summary>
/// <param name="state">日志实体</param>
private static void AsyncSave(object state)
{
try
{
LogStruct logStruct = (LogStruct)state;
Mutex fileMutex = new Mutex(false, logStruct.MutexName);
try
{
// 请求互斥体的所有权,若成功则进入临界区,否则等待
fileMutex.WaitOne();
// 在临界区中操作临界资源,即写入数据
FileInfo info = new FileInfo(logStruct.Path);
DirectoryInfo dinfo = new DirectoryInfo(info.DirectoryName);
if (!dinfo.Exists)
{
dinfo.Create();
}
StreamWriter writer = !info.Exists ? info.CreateText() : info.AppendText();
// 添加处理时间
string s = string.Format("[{0}]\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
string e = "\r\n----\r\n";
logStruct.Massage = s + logStruct.Massage + e;
writer.WriteLine(logStruct.Massage);
writer.Flush();
writer.Close();
}
catch (ThreadInterruptedException)
{
Console.Write("线程被中断");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
// 释放互斥体的所有权
fileMutex.ReleaseMutex();
}
Thread.Sleep(200);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
/// 异步保存
/// </summary>
/// <param name="state">日志实体</param>
private static void AsyncSave(object state)
{
try
{
LogStruct logStruct = (LogStruct)state;
Mutex fileMutex = new Mutex(false, logStruct.MutexName);
try
{
// 请求互斥体的所有权,若成功则进入临界区,否则等待
fileMutex.WaitOne();
// 在临界区中操作临界资源,即写入数据
FileInfo info = new FileInfo(logStruct.Path);
DirectoryInfo dinfo = new DirectoryInfo(info.DirectoryName);
if (!dinfo.Exists)
{
dinfo.Create();
}
StreamWriter writer = !info.Exists ? info.CreateText() : info.AppendText();
// 添加处理时间
string s = string.Format("[{0}]\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
string e = "\r\n----\r\n";
logStruct.Massage = s + logStruct.Massage + e;
writer.WriteLine(logStruct.Massage);
writer.Flush();
writer.Close();
}
catch (ThreadInterruptedException)
{
Console.Write("线程被中断");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
// 释放互斥体的所有权
fileMutex.ReleaseMutex();
}
Thread.Sleep(200);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
/// <summary>
/// 日志实体
/// </summary>
public struct LogStruct
{
public string Massage;
public string Path;
public string MutexName;
}