WPF - window.IsEnabled setter持续时间长

时间:2013-04-06 22:38:30

标签: wpf window duration

我对WPF中的Window.IsEnabled属性有疑问 - C#5.0,.NET4.5。

我有以下场景(简化):

1)带按钮的表格

2)用户触发长计算操作(从DB获取一些数据)

3)用户能够与新数据交互

我已经实现了以下方式:

1)Click处理程序 DISABLES 窗口(用于用户交互)并异步触发操作(这可以同步进行,无关紧要)

2)当异步操作完成后,窗口 ENABLED (通过 myWindowInstance.IsEnabled = true

我的问题是:

myWindowInstance.IsEnabled = true大约需要20秒。我必须注意窗口中有一个dataGridView用于获取数据。但是,如果没有禁用和重新启用胜利,这一切都需要大约1秒。另一个有趣的一点是,当我连接到小型本地数据库时,win.IsEnabled setter很快完成。与此相反,如果我使用远程大型数据库,则如上所述,此操作需要20秒。在这两种情况下,我只获取100行。

有没有人知道为什么简单的setter花了这么多时间?

非常感谢任何想法!

1 个答案:

答案 0 :(得分:1)

你可以做的一件事就是禁用你的窗口只是启用/禁用你插入其他控件之上的半透明矩形,用户将无法点击任何内容。 完成后,要么禁用它,要么将其Visibility属性设置为Hidden。

<Window>
    <Grid>
        <TextBox Text="Hello" HorizontalAlignment="Left" VerticalAlignment="Top" ></TextBox>
        <Rectangle Fill="DarkGray" Opacity="0.5" />
    </Grid>
</Window>

现在考虑到您的问题所花费的大量时间,您应该使用Visual Studio中的“分析”菜单来分析您的应用程序。