Закрытый метод вызывается два раза, это не мой случай.
Я думаю, что это, вероятно, так.Подумайте о том, чтобы дважды вызвать DoSomething
, сколько delgates было назначено для SaveCompleted
и сколько было удалено?Ответ: 2 были добавлены, но ни один не удален.Следовательно, когда он завершается во второй раз, Close
будет вызван дважды в быстрой последовательности.
Попробуйте этот код, который удаляет делегата после его запуска один раз.
public void DoSomething()
{
var wait = new WaitingScreen();
EventHandler<AsyncCompletedEventArgs> saveCompleted = null;
saveCompleted = (s, arg) =>
{
wait.Close();
svc.SaveCompleted -= saveCompleted;
};
svc.SaveCompleted += saveCompleted;
wait.Show();
svc.SaveAsync();
}
Сказаввсе, что я согласен с @zapico, использует инструментарий BusyIndicator для этой задачи.