2015-11-26 5 views
-1

Вот мой объект данных, что я хочу сделать поточно:Как потокобезопасный комплексный объект данных?

Dictionary<string, Dictionary<ClassA, ClassB>> 

Вот определение классов, без Hashcode DEFS:

public ClassA{ 
    public string String1 {get; set;} 
    public string String2 {get; set;} 
} 

public ClassB{ 
    public double Double1 {get; set;} 
    public double Double2 {get; set;} 
} 

В основном структура значения вложенного словаря постоянно меняется. Я хочу передать этот объект, чтобы его затем отправили/опубликовали в очередь сообщений (RabbitMQ). Я запускаю Исключения, которые бросают туда, где говорится, что коллекция Enum изменяется, поскольку она отправляется/публикуется в MQ.

Как я могу это решить?

Большое спасибо!

+1

Ваш вопрос довольно расплывчатый, поскольку мы не можем увидеть, как вы используете словарь. Но похоже, что это может помочь, если вы создадите копию ваших снимков и отправьте их в очередь. –

+0

Если мы не сможем точно понять, как вы собираетесь использовать словарь Словарей, и будут ли экземпляры ClassA и ClassB одновременно обрабатываться из разных потоков, на этот вопрос невозможно ответить. – spender

+0

Вы, ребята, правы - я создал копию своего объекта и вместо этого натолкнулся на это. Большое спасибо! – TheBear

ответ

0

Все значения, помещаемые во вложенный словарь, происходят в одном и том же потоке.

Я создал копию этого объекта в новый объект данных и потоковал, что вместо этого он работает как шарм.

Смежные вопросы