簡體   English   中英

如果多個用戶同時調用 C# File.WriteAllText 到同一位置會發生什么?

[英]what happens if multiple users call C# File.WriteAllText at the same time to the same location?

tldr; 如果一個應用程序的多個用戶/實例同時調用 File.WriteAllText() 到同一個文件路徑,會發生什么? 調用是否會引發異常,調用是否會引發異常並損壞文件,調用是否會“成功”但仍可能會損壞文件,操作系統會安排一個接一個發生還是會發生其他事情?

我們有一個應用程序,每次他們使用我們應用程序的主要功能時都會保存配置設置。 配置保存到應用程序的安裝文件夾,每次都保存到相同的路徑。 我們現在有一個客戶端,它希望多個用戶從同一安裝路徑運行應用程序。 如果沖突導致配置不保存,那不是問題,但如果沖突導致損壞,那就不方便了。 我只需要知道調用損壞文件而不拋出錯誤的可能性嗎?

任何幫助或來源鏈接將不勝感激,我在尋找時找不到任何東西。

提前致謝

編輯:使用 FileStream 和 FileShare.Read,如果另一個用戶嘗試在寫入過程中讀取文件,他會得到文件的早期版本嗎? 還是他會得到一個不完整的文件? 這不是一個正在寫入的大文件,但是否有必要將其設置為 FileShare.None 並向 file.read 添加重試?

事實證明它產生了一個異常(我運行了四個應用程序實例並同時關閉了它們,除了一個之外都拋出了異常),File.WriteAllText() 似乎鎖定了文件。 不過為了安全起見, FileStream 似乎提供了明確執行此操作的能力

using (FileStream writer = new FileStream(filepath, FileMode.Create, FileAccess.Write, FileShare.Read)) {
    writer.Write(jsonString));
    writer.Flush();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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