У меня есть несколько флажков в группе, и ниже приведен обработчик событий и связанный метод.
public async void CheckedChanged(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine($"Calling CheckedChanged {s.Name}: {s.CheckState}");
await Filter();
}
public async Task Filter()
{
System.Diagnostics.Debug.WriteLine($"Calling Filter");
// ....
}
Тем не менее, следующий отладочный вывод показывает, что метод Filter
вызывался дважды для каждого изменения состояния флажков.
Calling CheckedChanged CheckBox1: Checked
Calling Filter
Calling Filter
Calling CheckedChanged CheckBox1: Unchecked
Calling Filter
Calling Filter
Метод Filter
имеет несколько очень дорогих вызовов базы данных, и SQL Profiler показывает, что эти вызовы также вызываются дважды.
Оказывается, в Task.Run(...)
был вызван метод Filter
, и отладчик не смог получить вызывающего. Принятый ответ помог выяснить это.