[英]C# streamwriter invoke
我想在跨線程中訪問並編寫一個txt文件,但是軟件會給出異常,因為多個線程想要同時到達同一個文件。 我如何調用streamwriter以避免異常? 這是我的代碼:
void WriteLog(string LogStr)
{
StreamWriter sw = new StreamWriter("Log.txt", true);
sw.WriteLine(LogStr);
sw.Close();
}
我在線程中調用WriteLog方法。
謝謝。
您可以嘗試使用互斥鎖:
private Mutex mut = new Mutex(); // Somewhere in mail class
void WriteLog(string LogStr)
{
mut.WaitOne();
try
{
using(StreamWriter sw = new StreamWriter("Log.txt", true))
sw.WriteLine(LogStr);
}
finally
{
mut.ReleaseMutex();
}
}
使用Mutex
類:
Mutex mut = new Mutex();
我想如果你不想等待日志(聽起來只是邏輯上的),你應該將日志消息推送到同步隊列(可從.net 4獲得)並讓后台線程處理所有日志寫入。 如果你使用互斥鎖並鎖定它會達到你的性能。 在內存隊列中寫入比文件寫入快得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.