我想實現一個線程安全的文件IO類。我知道這可以通過鎖和信號量來實現。但我想使用Rx,因爲我正在學習使用Rx。任何人都可以幫助我以線程安全的方式使用Rx實現以下IO操作合同。我有幾個想法,比如創建像創建外部請求保存或讀取文件的管道,按順序調度所有請求。但我在如何實施方面苦苦掙扎。請指導。使用Rx執行IO操作Threadsafe
public interface IFileIO
{
/// <summary>
/// Task which writes text to the file asynchronously
/// </summary>
Task WriteTextAsync(IsolatedStorageFileStream storageFile, string text);
/// <summary>
/// Task which reads text from the file asynchronously
/// </summary>
Task<string> ReadTextAsync(IsolatedStorageFileStream storageFile);
}
請詳細說明我是否嘗試做錯事。我的目標是學習如果我可以避免在這些場景中使用鎖。這可以幫助我避免諸如死鎖等鎖定機制的問題。 –
使用Rx代替TPL是很好的,只需要注意Rx具有「零個或多個」值的語義,而TPL是「一個且只有一個值」。因此,任何返回一個值的東西肯定可以通過返回零或更多的東西來建模。 – Enigmativity