这篇文章主要介绍了C#实现多线程写入同一个文件的方法,涉及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#程序设计有所帮助。
新闻热点
疑难解答