簡體   English   中英

C#streamwriter調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM