1. 多线程向同一文件写入Log.

public delegate void AsyncLog(string str1, string str2);

private void Test()
{
Console.WriteLine("Test Start..."); for (int i = ; i < ; i++)
{
AsyncLog asyLog1 = new AsyncLog(WriteLog);
asyLog1.BeginInvoke("EventActionA" + i.ToString(), "EventContentA" + i.ToString(), null, null); AsyncLog asyLog2 = new AsyncLog(WriteLog);
asyLog2.BeginInvoke("EventActionB" + i.ToString(), "EventContentB" + i.ToString(), null, null); AsyncLog asyLog3 = new AsyncLog(WriteLog);
asyLog3.BeginInvoke("EventActionC" + i.ToString(), "EventContentC" + i.ToString(), null, null);
} Console.WriteLine("Test End...");
}
public static object lockObject = new object();

private void WriteLog(string strEventType, string strEventContent)
{
lock (lockObject)
{
Console.WriteLine("Write Log start... ThreadID:{0}", Thread.CurrentThread.ManagedThreadId); string strLogPath = string.Format("D:\\Log\\Log{0}.log", DateTime.Now.ToString("yyyy-MM-dd")); if (!File.Exists(strLogPath))
{
File.Create(strLogPath).Close();
} FileStream fs = new FileStream(strLogPath, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); sw.WriteLine(string.Format("{0} {1}", strEventType, strEventContent)); sw.Close();
fs.Close(); Console.WriteLine("Write Log End ThreadID:{0}", Thread.CurrentThread.ManagedThreadId);
}
}

最新文章

  1. CSharpGL(14)用geometry shader渲染模型的法线(normal)
  2. 那些年我们写过的T-SQL(中篇)
  3. Android总结篇系列:Android广播机制
  4. JavaScript数据操作--原始值和引用值的操作本质
  5. 【转】为什么C++编译器不能支持对模板的分离式编译
  6. H5页面请求跨域问题
  7. angular中实现jQuery的Document Ready
  8. 部分GDAL工具功能简介
  9. SCSI磁盘标准的架构与文档
  10. Android - 电池状态
  11. 解决访问swaggerUI接口文档显示basic-error-controler问题
  12. 基于spring-mybatis-data-common基架快速搭建web应用
  13. 浅谈Java简单实现的生产者与消费者问题
  14. Viewpager 去掉两侧的光晕效果
  15. SSRS (一)创建基础报表
  16. FTP 作业整理
  17. Java的bitmap到C
  18. LintCode-204.单例
  19. composer的安装和使用 学习日志
  20. spoj 104 Highways(Matrix-tree定理)

热门文章

  1. Centos Linux下使用Metasploit渗透android
  2. Python网络爬虫——BeautifulSoup4库的使用
  3. PHP连接XMPP用户,聊天室 进行增删改查。
  4. OBS带你玩转图片
  5. 重磅!华为云社区·CSDN【寻找黑马程序员】有奖征文活动奖项公布!!
  6. mac版 sublime快捷键大全
  7. 探究 Nginx 中 reload 流程的真相
  8. Oracle - 通过dg,完成单实例到rac的迁移
  9. 伸缩容器-display:flex设置flex属性的理解
  10. HTTP 错误 500.19 - Internal Server Error 错误代码 0x80070005 由于权限不足而无法读取配置文件