我有一個應用程序用於讀寫數據到不同的存儲位置。存在包含多個存儲設備的存儲池的概念。一次只能有一個設備可用於寫入內容。事實上池中的第一個存儲設備被認爲是活動的。一旦它變滿或無法訪問,下一個設備應該變爲活動狀態。管理多線程存儲池
我有一個類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