最小化WPF中的对话框加载时间

时间:2011-07-19 11:16:00

标签: c# .net wpf multithreading dispatcher

我有一个包含两个控件的对话框 a)组合框和 b)图形控制。

初始化对话框时,组合框包含10个项目。

假设对于每个项目的更改,我必须读取大数据点并将它们绘制到图形控件中。每项更改的整个活动大约需要10秒钟。

有两种情况:

  1. 当我双击对话框时,组合框的选择更改也将被触发,最终在加载对话框时将大数据读取并将其绘制到图形控件中。由于哪个对话框需要很长时间才能出现。

  2. 当我在组合框中进行选择更改时(启动对话框时),它将再次读取数据。但是,当对话框已经启动时,我将在一个单独的线程上执行此活动。

  3. 但我的问题是如何在第1点中最小化对话加载时间?我需要最小化对话框加载时间。

    请帮助!! 1

1 个答案:

答案 0 :(得分:0)

我很难理解第1点到底发生了什么 - 关闭对话框,按下主窗口中的按钮打开对话框,现在打开对话框需要很长时间?或者对话框已经打开,你双击它,现在它很慢(这没有意义,因为这应该是第2点......)?

无论如何,如果我理解正确并且您的主要问题是,在打开对话框时您还会加载图表,这会导致对话框在10秒后显示,那么这就是您需要做的事情:

在对话框窗口中,Loaded()事件处理程序填充组合框并设置其选定索引(适用于任何适当的,例如0)。在组合框SelectedIndexChanged事件处理程序中创建一个后台线程来获取图形数据,一旦完成,就更新对话窗口(例如this.Dispatcher.Invoke(...))。

虽然我不明白为什么你没有通过实施第2点来实现这一点......