Я реализую класс, который будет использоваться одновременно из нескольких потоков. Большинство свойств получают и устанавливают примитивные типы, которые могут правильно обрабатываться классом Interlocked. Класс включает свойство Guid. Это не так просто реализовать в поточно-ориентированном виде. Это как вы бы реализовали свойство? Заранее спасибо.
private Byte[] _activityId;
public Guid ActivityId
{
get { return new Guid(this._activityId); }
set
{
Byte[] bytes = value.ToByteArray();
Interlocked.Exchange(ref this._activityId, bytes);
}
}
ОБНОВЛЕНИЕ: Таким образом, единственное предлагаемое решение до этого момента не включает использование каких-либо классов или конструкций Threading. Итак, я собираюсь поставить вопрос, который я уже задал в комментариях:
Насколько я понимаю, назначения типов ссылочных / примитивных значений являются атомарными, однако Interlocked гарантирует, что изменение распространяется на все потоки. Если бы мы могли просто присвоить значение, почему Interlocked предоставляет API для обмена ссылочными типами и примитивными значениями?