我有一个应用程序用于读写数据到不同的存储位置。存在包含多个存储设备的存储池的概念。一次只能有一个设备可用于写入内容。事实上池中的第一个存储设备被认为是活动的。一旦它变满或无法访问,下一个设备应该变为活动状态。管理多线程存储池
我有一个类ProviderManager与以下接口。
public class DeviceManager
{
public StorageDevice CurrentDevice {get; private set;}
public bool MoveNext() { // get device on next index }
}
的问题是,我们进入下一个设备时,才会有一个例外,这意味着其要么填充或无法访问。可能会出现多线程无法在设备上写入的情况,并且每个线程都会调用DeviceManager.MoveNext(),而不是仅由其中一个线程调用它。
虽然,我可以管理它,但涉及一些肮脏的工作。寻找一个很好的方式来管理这个。
您的想法?
DeviceManager被称为StorageAdapter的另一个类使用。由StorageAdapter在DeviceManager.Current上调用所有读取和写入操作。因此,如果有任何异常,MoveNext必须由StorageAdapter调用。 – Sumee 2011-06-06 09:46:31