Заблокировать доступ к свойству в C# с помощью методовC#

Место общения программистов C#
Anonymous
Заблокировать доступ к свойству в C# с помощью методов

Сообщение Anonymous »

У меня есть следующий класс:

Код: Выделить всё

internal class Invite {
private int _State = 0;

public int State {
get {
// should be thread safe
return _State;
}
set {
_State = value;
}
}

public void EnterUpdate() {
// lock _state
}

public void ExitUpdate() {
// release lock

}
}
Поэтому, когда поток хочет прочитать «Состояние», он должен быть потокобезопасным, однако существует также возможность заблокировать его с помощью общедоступных методов и разблокировать его с помощью другого метода.< /p>

Код: Выделить всё

var obInvite= new Invite();
obInvite.EnterUpdate();
// ....
obInvite.ExitUpdate();
Обычно мне нужно что-то вроде транзакции, но наличие «EnterUpdate» и «ExitUpdate» важно, и только «блокировки» вокруг «получить» и «установить» будет недостаточно для моего требование.
Я пробовал Mutex, Monitor или ReaderWriterLockSlim, но они не помогли, либо я не мог их правильно использовать.
Обновление:< /p>
Я могу дать больше контекста. В то же время объект Invite может быть записан в сторонний сервис с новым состоянием, его можно прочитать в другом потоке из того же стороннего сервиса. Поэтому я хотел бы подождать, пока он будет зафиксирован, а затем позволить другим потокам прочитать состояние.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ng-methods

Вернуться в «C#»