У нас есть приложение WPF, которое автоматически сохраняет данные в базе данных, как только свойство установлено. Вызов для сохранения выполняется в асинхронном c методе.
Мне не нужно ждать вызова. Это в основном срабатывает и забывается, если не происходит исключение.
Мы обрабатываем это с событиями, вызывая событие из установщика свойств. Таким образом, мы могли бы иметь asyn c void обработчики событий, а затем быть async / await вплоть до процедуры сохранения. Обработка исключений хорошо работает с этим шаблоном.
private async void Save(object sender, PropertyChangedEventArgs e){}
private event PropertyChangedEventHandler SaveEvent;
public MyClass()
{
SaveEvent += Save;
}
public int Foo
{
get => _foo;
set
{
SetProperty(ref _foo, value);
SaveEvent?.Invoke(this, new PropertyChangedEventArgs());
}
}
Нужны ли нам эти события? Каковы последствия простого вызова asyn c void метода напрямую, как это? В частности, когда речь идет об обработке исключений, будет ли когда-либо ловиться исключение?
private async void Save(){}
public int Foo
{
get => _foo;
set
{
SetProperty(ref _foo, value);
Save();
}
}