Закрытие окна вызывает исключение InvalidOperationException - PullRequest
0 голосов
/ 22 мая 2018

У меня есть окно, в котором я обрабатываю событие Closing в пользовательской функции.В XAML я установил следующее:

<ext:ExtendedWindow x:Name="Window1" Closing="Window_Closing">

Эта функция объявлена ​​в коде следующим образом:

private void Window_Closing(object sender, CancelEventArgs e)
    {
        Closing -= Window_Closing;
        e.Cancel = true;
        Storyboard storyboard = this.CloseWindowWidthAnimation(0f);
        storyboard.Completed += CloseWindow;
        storyboard.Begin();

    }

    private void CloseWindow(object sender, EventArgs e)
    {
        this.Close();
    }

Window_Closing отменяет закрывающее событие и воспроизводит анимацию наокно (ширина уменьшается до 0).К событию Completed я добавляю функцию, которая, наконец, закрывает окно после воспроизведения анимации.CloseWindowWidthAnimation - это статический метод в классе помощника, который просто возвращает раскадровку.ExtendedWindow имеет базовый класс Window и имеет лишь несколько свойств зависимости для обработки цветовых схем.

Когда функция Close завершает выполнение и включена функция Just My Code, появляется экран «режима прерывания».Продолжение сеанса отладки завершает работу приложения, но я думаю, что это известная проблема .Когда функция «Просто мой код» отключена, отображается следующая ошибка:

This Visual is not connected to a PresentationSource.

Ошибка показывает , когда окно фактически было закрыто после выхода из CloseWindow.Я думаю, что это как-то связано с раскадровкой / анимацией, поскольку не выдает ошибку, когда я не перезаписываю событие Closing.Когда я собираю приложение и запускаю исполняемый файл, оно не падает, и я не улавливаю ошибку где-то.Я думаю, что это как-то связано с раскадровкой, но ошибка не очень описательная, и я не смог ничего найти по этому поводу.Поэтому мой вопрос заключается в следующем:

Что может быть причиной такого поведения?Что я мог сделать, чтобы это исправить?

Обновление: Окно стека вызовов (основной поток)

Call Stack window

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...