第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如果我使用 WriteAsync,當(dāng)多個(gè)后臺工作人員嘗試寫入同一個(gè) .txt 文件時(shí)

如果我使用 WriteAsync,當(dāng)多個(gè)后臺工作人員嘗試寫入同一個(gè) .txt 文件時(shí)

C#
紫衣仙女 2022-10-23 16:07:03
我有多個(gè)backgroundworkers都想寫入 log.txt,這會(huì)導(dǎo)致異常The process cannot access the file 'C:\...\log.txt' because it is being used by another process.。我知道這是一個(gè)很長的鏡頭,但如果我使用它會(huì)有所幫助WriteAsync()還是根本沒有效果?(如果這不是一個(gè)簡單的解決方案,我想我必須實(shí)現(xiàn)mutex我以前見過的對象。)public static void WriteToLog(string text, bool append = true){    try    {        using (var writer = new StreamWriter("log.txt", append))        {            writer.Write(text);            // writer.WriteAsync(text); // Would this 'queue up' instead of trying                                            to access the same process at the same time?        }    }    catch (Exception ex)    {        Console.WriteLine($"ERROR! Fejl i loggen! {ex.Message}. {ex.StackTrace}");    }}
查看完整描述

3 回答

?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊

真正回答你的問題。不,它不會(huì)使您免于鎖定問題。async 不是一個(gè)可以同步所有線程的神奇關(guān)鍵字。相反,它甚至可能根據(jù)同步器啟動(dòng)自己的線程。

除非您在單線程模型上,否則是的,這將排隊(duì),因?yàn)橥狡髦挥幸粋€(gè)線程可以使用。然后它必須通過上下文切換將所有異步調(diào)用排隊(duì)。但是,如果您使用的是單線程模型,那么您一開始就不會(huì)遇到這個(gè)問題。


查看完整回答
反對 回復(fù) 2022-10-23
?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可以通過多種方式解決問題。

  1. 使用鎖定機(jī)制來同步對共享資源的訪問。對于這種情況,一個(gè)不錯(cuò)的選擇是 ReaderWriterLockSlim

  2. 使用日志框架(有很多好的庫并且非常可靠)。

就我個(gè)人而言,我更喜歡使用日志記錄框架,因?yàn)槟鷮⑹褂迷S多有用的功能(滾動(dòng)文件附加程序、數(shù)據(jù)庫記錄器等),它們將為您提供一個(gè)干凈的解決方案,用于零黑客和維護(hù)的日志記錄。


查看完整回答
反對 回復(fù) 2022-10-23
?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

雖然使用日志框架是最好的解決方案,但專門解決這個(gè)問題......

附加模式需要鎖定文件,當(dāng)無法獲得鎖定時(shí),您會(huì)收到收到的錯(cuò)誤。你可以同步所有線程,但你會(huì)阻塞它們一段時(shí)間。使用WriteAsync并不能緩解問題。

更好的解決方案是將您的消息排入隊(duì)列,然后有一個(gè)專用線程將它們出列并寫入日志。因此,您不需要同步,因?yàn)樗袑懭攵加蓡蝹€(gè)線程完成。

我會(huì)再次警告:使用日志框架。


查看完整回答
反對 回復(fù) 2022-10-23
  • 3 回答
  • 0 關(guān)注
  • 165 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號