Я читаю объект Guid дважды, один раз в операторе if и один раз в блоке оператора if.
В CI локально скопировал бы переменную, чтобы убедиться, что операция чтениявнутри оператора if не читается другое значение (если другой поток изменяет это значение между ними).
Я скептически отношусь к тому, что следующий подход является а) потокобезопасным и б) даст мне то же значение:
public class MyClass {
private Guid MyProp {get;set;} = Guid.Empty; //May be changed at will
public OnRunLoop() //Gets called periodicaly on a thread
{
var ALocalCopyOfTheProp = MyProp; //Copy locally
if(ALocalCopyOfTheProp == AValueFromAnotherPlace) //Read 1
{
...
var AnotherReadOfTheVariable = ALocalCopyOfTheProp; //Read 2
}
...
}
C # .NET изначально не имеет возможности копирования из моего поиска в Google, так что лучше в таком случае, как этот?
Редактировать: - Обратите внимание, что в этом случае MyProp отключениз моих рук.Я не могу использовать замок, так как собственность исходит из другого места.(извиняюсь за то, что не сделал это более понятным) - Guid - это структура, а не ссылочный тип