C# -- 多线程向同一文件写入
2024-08-29 06:47:23
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);
}
}
最新文章
- CSharpGL(14)用geometry shader渲染模型的法线(normal)
- 那些年我们写过的T-SQL(中篇)
- Android总结篇系列:Android广播机制
- JavaScript数据操作--原始值和引用值的操作本质
- 【转】为什么C++编译器不能支持对模板的分离式编译
- H5页面请求跨域问题
- angular中实现jQuery的Document Ready
- 部分GDAL工具功能简介
- SCSI磁盘标准的架构与文档
- Android - 电池状态
- 解决访问swaggerUI接口文档显示basic-error-controler问题
- 基于spring-mybatis-data-common基架快速搭建web应用
- 浅谈Java简单实现的生产者与消费者问题
- Viewpager 去掉两侧的光晕效果
- SSRS (一)创建基础报表
- FTP 作业整理
- Java的bitmap到C
- LintCode-204.单例
- composer的安装和使用 学习日志
- spoj 104 Highways(Matrix-tree定理)
热门文章
- Centos Linux下使用Metasploit渗透android
- Python网络爬虫——BeautifulSoup4库的使用
- PHP连接XMPP用户,聊天室 进行增删改查。
- OBS带你玩转图片
- 重磅!华为云社区·CSDN【寻找黑马程序员】有奖征文活动奖项公布!!
- mac版 sublime快捷键大全
- 探究 Nginx 中 reload 流程的真相
- Oracle - 通过dg,完成单实例到rac的迁移
- 伸缩容器-display:flex设置flex属性的理解
- HTTP 错误 500.19 - Internal Server Error 错误代码 0x80070005 由于权限不足而无法读取配置文件