Я пытаюсь быстро собрать небольшую программу, используя Alchemy Websockets, которая использует коллекцию ConcurrentDictionary в своих примерах.
В коде, который я написал, я пытаюсь добавить нового клиента в ConcurrentDictionary. Я заметил, что мой сценарий дает сбой в других областях при попытке доступа к этому клиенту, и сузил его до элементов, которые я добавляю в ConcurrentDictionary, немедленно переходят в состояние «зомби».
Вот тестовый код, где я добавляю клиента:
Client test = new Client(ctx, sessId);
Clients.TryAdd(test, String.Empty);
Console.WriteLine ("Adding new client: " + sessId);
Если я использую свой отладчик для взлома этой области, я вижу, что «тест» содержит правильную информацию о клиенте, но сразу после добавления его в коллекцию «Клиенты» он говорит: «Объект находится в состоянии зомби. (Исключение из HRESULT: 0x8013134F)» .
Словарь объявлен в моем классе как таковой:
protected ConcurrentDictionary<Client, string> Clients = new ConcurrentDictionary<Client, string>();
Я знаю, что, вероятно, делаю что-то глупо очевидное, но что дает?