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);
}
}

C# -- 多线程向同一文件写入的更多相关文章

  1. 扔掉log4j、log4j2,自己动手实现一个多功能日志记录框架,包含文件,数据库日志写入,实测5W+/秒日志文件写入,2W+/秒数据库日志写入,虽然它现在还没有logback那么强大

    讲到log4j,现在国外基本是没有开发者用这个框架了,原因大致有几点,1.功能太少:2.效率低下:3.线程锁bug等等等各种莫名其妙的bug一直都没解决. 其实最重要的是log4j的作者自己也放弃了l ...

  2. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.F ...

  3. 多线程协作 FileStream文件读写操作,读写冲突解决

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  4. Java多线程断点下载文件

    Java实现断点续传+多线程下载 如下代码所示,每一步都有注解 思路: 通过URL连接到服务器上要下载的文件,得到文件的大小: 算出每条线程下载的开始位置和结束位置,例如,有两条线程下载100Byte ...

  5. php多线程操作同一文件-待续

    同意文件操作同意文件的问题在于逻辑有些地方不合适,如果多个线程同时写入,在不加锁的情况下,可能导致得到结果不如意,为了安全,和脏读(数据库的词),应该使用排他锁,这就意味着每次只能被一个线程操作.其他 ...

  6. Java文件写入,换行

    import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExce ...

  7. 视频文件写入转换之图像处理-OpenCV应用学习笔记五

    在<笔记二>中我们做了视频播放和控制的实现,仅仅算是完成了对视频文件的读取操作:今天我们来一起练习下对视频文件的写入操作:格式转换. 实现功能: 打开一个视频文件play.avi,读取文件 ...

  8. Python学习笔记——文件写入和读取

    1.文件写入 #coding:utf-8 #!/usr/bin/env python 'makeTextPyhton.py -- create text file' import os ls = os ...

  9. Sqli-LABS通关笔录-7[文件写入函数Outfile]

    该关卡最主要的就是想要我们学习到Outfile函数(文件写入函数)的使用. 通过源代码我们很容易的写出了payload.倘若我们一个个去尝试的话,说实话,不容易. http://127.0.0.1/s ...

随机推荐

  1. 构建一个flink程序,从kafka读取然后写入MYSQL

    最近flink已经变得比较流行了,所以大家要了解flink并且使用flink.现在最流行的实时计算应该就是flink了,它具有了流计算和批处理功能.它可以处理有界数据和无界数据,也就是可以处理永远生产 ...

  2. css练习一

    总体的html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...

  3. luogu P1731 [NOI1999]生日蛋糕 |暴力枚举

    题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri, 高度为Hi的圆柱 ...

  4. 创建自己的github仓库

    作者: wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/20067595 一.创建自己的github仓库 CocoaPods都托 ...

  5. MongoDB第三天(正则,管道,聚合,字符串,算术,日期,java连接MongoDB)

    部分正则表达式: i:忽略大小写 m:多行查找 x:设置 x 选项后,正则表达式中的非转义的空白字符将被忽略.   s:允许点字符(即.)匹配包括换行符在内的所有字符. w:匹配包括下划线的任何单词字 ...

  6. jQuery中的层级选择器

    话不多说,请看效果: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  7. Coderforces-455A

    Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winte ...

  8. Typora常见的快捷方式

    操作类型 操作 快捷键 文件操作 新建 Ctrl + N    新建窗口 Ctrl + Shift + N    打开 Ctrl + O    快速打开 Ctrl + P    保存 Ctrl + S ...

  9. 【JS】388- 深入了解强大的 ES6 「 ... 」 运算符

    本文原载于 SegmentFault 社区 专栏:大前端  作者:皮小蛋 背景 ... 运算符,是 ES6 里一个新引入的运算法,也叫 展开/收集 运算符,我们每天都要和它打交道. 这篇文章,我就带你 ...

  10. 一篇文章搞清楚HashMap和TreeMap的内部结构

    一.HashMap 1.基于哈希表的 Map 接口的实现. 此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Has ...