Занятия:
public class SomeCollection
{
public void IteratorReset()
{
index = -1;
}
public bool IteratorNext()
{
index++;
return index < Count;
}
public int Count
{
get
{
return floatCollection.Count;
}
}
public float CurrentValue
{
get
{
return floatCollection[index];
}
}
public int CurrentIndex
{
get
{
return intCollection[index];
}
}
}
Класс, который содержит ссылку на SomeCollection:
public class ThreadUnsafeClass
{
public SomeCollection CollectionObj
{
get
{
return collectionObj;
}
}
}
Классы ClassA
, ClassB
и ClassC
содержат следующий цикл, который выполняет итерации по CollectionObj:
for (threadUnsafeClass.CollectionObj.IteratorReset(); threadUnsafeClass.CollectionObj.IteratorNext(); )
{
int currentIntIndex = threadUnsafeClass.CollectionObj.CurrentIndex;
float currentfloatValue = threadUnsafeClass.CollectionObj.CurrentValue;
// ...
}
Поскольку я только читаю CollectionObj в 3 классах, я использую многопоточность для ускорения, но я не совсем уверен, как обеспечить безопасность потоков. Я добавил блокировку в ThreadUnsafeClass при получении CollectionObj, но приложение выдает исключение вне диапазона.
Любая помощь приветствуется.
Спасибо!