C#实现多线程写入同一个文件的方法

本文实例讲述了C#实现多线程写入同一个文件的方法。分享给大家供大家参考。具体实现方法如下:

namespace WfpApp

{

public partial class Form2 : Form

{

object obj = new object();

public Form2()

{

InitializeComponent();

System.Threading.Thread thread;

string[] users = new string[] { "zkk", "admin", "administrator", "soft", "iany", "nec", "necsl" };

for (int i = 0; i < users.Length; i++)

{

thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(WriteLock));

thread.Start(users[i]);

}

}

public void WriteThread(object user)

{

string path = System.Windows.Forms.Application.StartupPath + "\\app\\";

if (!System.IO.Directory.Exists(path))

System.IO.Directory.CreateDirectory(path);

path = path + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt";

StringBuilder sb = new StringBuilder();

sb.AppendLine("----------------------------" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "--------------------------");

sb.AppendLine(user.ToString());

sb.AppendLine("---------------------------------------------------------------------------------");

sb.AppendLine();

//if (!System.IO.File.Exists(path))

// System.IO.File.Create(path).Close();

System.IO.FileStream fileStream = new System.IO.FileStream(path, System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite);

System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream, Encoding.Default);

sw.Write(sb.ToString());

sw.Close();

sw.Dispose();

fileStream.Close();

fileStream.Dispose();

}

public void WriteLock(object user)

{

lock (obj)

{

string path = System.Windows.Forms.Application.StartupPath + "\\app\\";

if (!System.IO.Directory.Exists(path))

System.IO.Directory.CreateDirectory(path);

path = path + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt";

StringBuilder sb = new StringBuilder();

sb.AppendLine("----------------------------" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "--------------------------");

sb.AppendLine(user.ToString());

sb.AppendLine("---------------------------------------------------------------------------------");

sb.AppendLine();

if (!System.IO.File.Exists(path))

System.IO.File.Create(path).Close();

System.IO.FileStream fileStream = new System.IO.FileStream(path, System.IO.FileMode.Append, System.IO.FileAccess.Write);

System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream, Encoding.Default);

sw.Write(sb.ToString());

sw.Close();

sw.Dispose();

fileStream.Close();

fileStream.Dispose();

}

}

}

}

希望本文所述对大家的C#程序设计有所帮助。相关阅读:

Win7系统打开英雄联盟提示"LOL进程Client.exe正在运行请手动关闭"的解决方法

基于Sql Server通用分页存储过程的解决方法

CSS制作框架 Sass 3.4.4 今日发布

PHP借助phpmailer发送邮件

MAC中快速安装卸载大型软件的技巧

C#实现软件监控外部程序运行状态的方法

《解剖PetShop》之六:PetShop之表示层设计

php查询mysql数据库并将结果保存到数组的方法

C语言中结构体偏移及结构体成员变量访问方式的问题讨论

最新Win10 10130预览版支持同时运行Modern App多个实例

Android简单实现自定义流式布局的方法

Win8.1如何删除美式键盘?Win8.1系统删除美式键盘的方法

浅析php创建者模式

JavaScript实现简单的tab选项卡切换

php 多线程写入文件,C#_C#实现多线程写入同一个文件的方法,本文实例讲述了C#实现多线程 - phpStudy...相关推荐

  1. itextsharp php,C#_C#使用iTextSharp设置PDF所有页面背景图功能实例,本文实例讲述了C#使用iTextSharp - phpStudy...

    C#使用iTextSharp设置PDF所有页面背景图功能实例 本文实例讲述了C#使用iTextSharp设置PDF所有页面背景图功能的方法.分享给大家供大家参考.具体如下: 在生成PDF 的时候,虽然 ...

  2. 安卓查看php文件是否存在,Android_Android编程判断SD卡是否存在及使用容量查询实现方法,本文实例讲述了Android编程判断 - phpStudy...

    Android编程判断SD卡是否存在及使用容量查询实现方法 本文实例讲述了Android编程判断SD卡是否存在及使用容量查询实现方法.分享给大家供大家参考,具体如下: 1.判断SD卡是否存在 返回tr ...

  3. php统计大写字母个数,C++_C++统计中英文大小写字母、数字、空格及其他字符个数的方法,本文实例讲述了C++统计中英文 - phpStudy...

    C++统计中英文大小写字母.数字.空格及其他字符个数的方法 本文实例讲述了C++统计中英文大小写字母.数字.空格及其他字符个数的方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * ...

  4. php 文件指定位置添加内容,C++_VC++在TXT文件指定位置追加内容的方法,本文实例讲述了VC++操作文本文 - phpStudy...

    VC++在TXT文件指定位置追加内容的方法 本文实例讲述了VC++操作文本文件的方法,实现在txt文件指定位置插入内容.对于VC++爱好者有一定的学习参考价值. 主要功能代码如下: void CGoT ...

  5. php datatable导出excel,C#_C#实现将DataTable内容输出到Excel表格的方法,本文实例讲述了C#实现将DataTabl - phpStudy...

    C#实现将DataTable内容输出到Excel表格的方法 本文实例讲述了C#实现将DataTable内容输出到Excel表格的方法.分享给大家供大家参考.具体如下: 1.关于本文 本文描述了一个函数 ...

  6. java sqlite 多线程并发_C#_C#解决SQlite并发异常问题的方法(使用读写锁),本文实例讲述了C#解决SQlite并 - phpStudy...

    C#解决SQlite并发异常问题的方法(使用读写锁) 本文实例讲述了C#解决SQlite并发异常问题的方法.分享给大家供大家参考,具体如下: 使用C#访问sqlite时,常会遇到多线程并发导致SQLI ...

  7. 骰子算法 php,C++_C++实现N个骰子的点数算法,本文实例讲述了C++实现N个骰子 - phpStudy...

    C++实现N个骰子的点数算法 本文实例讲述了C++实现N个骰子的点数算法,分享给大家供大家参考之用.具体方法如下: 题目要求:把n个骰子仍在地上,所有点数 实现代码如下: #include using ...

  8. 文件描述符(多进程对同一个文件操作)

    进程文件描述符:filedescrption,实际上我们调用open打开文件后得到的一个句柄,是个整数.属于用户区用来记录文件的一些信息,如文件指针,指向系统文件描述符表的指针,保存在进程的PCB中. ...

  9. 怎样用java实现文件比较,判断是否是同一个文件

    问题的提出:怎样用java实现文件的比较,比如两张图片是否相同,或任意两个文件是否为同一个文件? 解决思路: 文件进行比较是否相同,只要用于图片的比较,其它文件也可以的 比较的思路,首先比较两个文件大 ...

最新文章

  1. selenium python (八)定位frame中的对象
  2. PHP 底层的运行机制与原理 --转
  3. MATLAB机器学习系列-8 极限学习机(Extreme Learning Machine, ELM)原理及其代码实现
  4. PngEncoder_CreateInstance Failed writing PNG because unable to find libpng12.so.0
  5. 用函数计算工龄_用Excel计算财务账期,离不开这3个函数
  6. 面向对象—的__new__()方法详解
  7. 爬取词库,使用jieba分词库,自定义dict.txt文件+将搜狗词库.scel文件为.txt文件
  8. springboot gateway post body 为空_Spring Boot常见属性以及问题总结
  9. [NOIP2017 TG D2T2]宝藏(模拟退火)
  10. openwrt多拨插件_折腾小日记三:爱快PKopenwrt多拨实测
  11. PDMS开发使用的pml界面设计器
  12. matlab 取整数命令,matlab取整函数命令代码
  13. ppt母版的神奇用法
  14. unity 图片改成astc 所有机型机型检测
  15. docker中mysql忘记密码怎么办?
  16. 拉里 埃里森_拉里·埃里森(Larry Ellison)的宝座
  17. HDU 6578 Blank
  18. 示波器常见的四种探头
  19. web课程设计网页规划与设计:个人毕设网站设计 —— 二手书籍(11个页面) HTML+CSS+JavaScript...
  20. Flutter 自定义Widget——风车实现

热门文章

  1. python测试系列教程 —— 单元测试unittest
  2. OPNET网络仿真分析-1.1.3、OPNET Modeler
  3. tasm报错illegal memory reference的解决办法
  4. WPF ViewModel与多个View绑定后如何解决的问题
  5. PHP魔术方法小结.md
  6. 使用Pack200压缩你的代码
  7. 禁止minigui 3.0的屏幕保护
  8. Ruby笔记三(类、对象、属性)
  9. [转载] 深度测评Python的3种“字符串格式化”方法,看看你喜欢哪一种?
  10. Swift调用微信支付宝SDK(Swift4.0)