Заблокировать доступ к свойству в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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