Постараюсь изо всех сил объяснить ситуацию.Настройка свойств объекта по нескольким потокам
public class A
{
Int64 Id { get; set; }
Decimal Foo { get; set; }
}
public class B
{
Int64 Id { get; set; }
Decimal Bar { get; set; }
}
public class C
{
Int64 Id { get; set; }
Decimal? Foo { get; set; }
Decimal? Bar { get; set; }
}
public class test
{
ConcurrentDictionary<Int64, C> dictionary { get; set; }
List<A> listA { get; set; }
List<B> listB { get; set; }
}
listA и listB каждый содержит 5 миллионов объектов.
Так что я делаю, я прохожу через listA и listB в отдельных потоках. Я проверяю, содержит ли словарь идентификатор, затем получите значение и задайте свойство соответствия.
Так что мой вопрос в том, что это потоки? Если нет, то что было бы лучшим способом сделать это потокобезопасны
еще одна вещь:
- Там нет дубликатов в lišta и LISTB. Поэтому я только однажды установил свойство любого объекта C.
Пример использования фиктивного данных:
List<A> listA = new List<A>
{
new A { Id = 1, Foo = 5 },
new A { Id = 2, Foo = 10 },
new A { Id = 3, Foo = 100 }
};
List<B> listB = new List<B>
{
new A { Id = 1, Bar = 3 },
new A { Id = 2, Bar = 2 },
new A { Id = 3, Bar = 1 }
};
ConcurrentDictionary<Int64, C> dictionary = new ConcurrentDictionary<Int64, C>
{
Keys = {1, 2, 3},
Values = { new C { Id = 1 }, new C { Id = 2 }, new C { Id = 3 } }
};
Потом я словарь будет иметь эти пары ключ/значение:
Key = 1 , value = object of class C with properties : Id = 1, Foo = 5, Bar = 3,
Key = 1 , value = object of class C with properties : Id = 1, Foo = 10, Bar = 2,
Key = 1 , value = object of class C with properties : Id = 1, Foo = 100, Bar = 1