0
我有兩個不同的進程共享相同的文件,第一個是讀者,第二個是作家。我在C#中使用StreamWriter和StreamReader,但我有一個異常「進程無法訪問文件'文件名',因爲它正在被另一個進程使用」。 我怎樣才能實現線程安全?如何確保線程安全,當我有兩個進程使用相同的文件?
我有兩個不同的進程共享相同的文件,第一個是讀者,第二個是作家。我在C#中使用StreamWriter和StreamReader,但我有一個異常「進程無法訪問文件'文件名',因爲它正在被另一個進程使用」。 我怎樣才能實現線程安全?如何確保線程安全,當我有兩個進程使用相同的文件?
這與線程安全無關,但進程間同步。使用進程間鎖(稱爲命名Mutex)
嗯,我找到了解決辦法,爲我所用的作家:
using (StreamWriter sw = new StreamWriter(Path))
{
//WorkTodo
}
而對於讀者
using (StreamReader sr = new StreamReader(Path))
{
//WorkTodo
}
鎖定資源 – Rahul
有在你的情況下不需要_thread safety_,應該有一個進程間同步。 – dymanoid
當你創建StreamReader時,確保你使用了一個接受'FileAccess'參數的構造函數,然後傳遞'FileAccess.Read'。這應該允許讀者在作者寫作時閱讀。 – adv12