关闭窗口会抛出InvalidOperationException

时间:2018-05-22 15:28:47

标签: c# wpf

我有一个窗口,我在其中处理自定义函数中的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,只有一些依赖属性来处理颜色方案。

当关闭功能执行完毕并且启用了“我的代码”时,“中断模式”将被执行。屏幕弹出。继续调试会话退出应用程序,但我认为这是known issue。禁用“仅我的代码”时,以下错误显示:

This Visual is not connected to a PresentationSource.

在CloseWindow退出后,当窗口实际上已关闭时,错误显示。我认为它与故事板/动画有关,因为当我不覆盖Closing事件时它不会抛出错误。当我构建应用程序并运行可执行文件时,它不会崩溃,我也不会在某处发现错误。我认为它与故事板有关,但错误并不是非常具有描述性,而且我还没有找到任何相关内容。所以我的问题如下:

可能导致此类行为的原因是什么?我可以做些什么来解决这个问题?

更新:调用堆栈窗口(主线程)

Call Stack window

0 个答案:

没有答案