我想实现一个线程安全的文件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