這篇文章主要介紹了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#程序設計有所幫助。
新聞熱點
疑難解答