Например, каждый раз, когда завершается асинхронная операция, которая влияет на состояние приложения, я делаю это
lock (_parent._stateObj) {
_parent._asyncOperations.Remove(this);
Monitor.PulseAll(_parent._stateObj);
}
Я делаю это так, чтобы все, что ожидает завершения операций, например, процедура выхода из системы, были уведомлены.
Должен ли я / я должен делать что-то более похожее на
lock (_parent._stateObj) {
_parent._asyncOperations.Remove(this);
if (_parent._loggingOut) Monitor.PulseAll(_parent._stateObj);
}
Просто пытаюсь выяснить, должен ли я всегда быть пульсирующим при изменении внутреннего состояния приложения. И в большой библиотеке с в основном асинхронными вызовами, правда ли, что я должен более или менее всегда использовать PulseAll, поскольку может иметь место любое количество асинхронных вызовов, которые «зарегистрировались» в основном состоянии библиотеки?
Надеюсь, это имеет смысл