我有一个包含两个控件的对话框 a)组合框和 b)图形控制。
初始化对话框时,组合框包含10个项目。
假设对于每个项目的更改,我必须读取大数据点并将它们绘制到图形控件中。每项更改的整个活动大约需要10秒钟。
有两种情况:
当我双击对话框时,组合框的选择更改也将被触发,最终在加载对话框时将大数据读取并将其绘制到图形控件中。由于哪个对话框需要很长时间才能出现。
当我在组合框中进行选择更改时(启动对话框时),它将再次读取数据。但是,当对话框已经启动时,我将在一个单独的线程上执行此活动。
但我的问题是如何在第1点中最小化对话加载时间?我需要最小化对话框加载时间。
请帮助!! 1
答案 0 :(得分:0)
我很难理解第1点到底发生了什么 - 关闭对话框,按下主窗口中的按钮打开对话框,现在打开对话框需要很长时间?或者对话框已经打开,你双击它,现在它很慢(这没有意义,因为这应该是第2点......)?
无论如何,如果我理解正确并且您的主要问题是,在打开对话框时您还会加载图表,这会导致对话框在10秒后显示,那么这就是您需要做的事情:
在对话框窗口中,Loaded()
事件处理程序填充组合框并设置其选定索引(适用于任何适当的,例如0)。在组合框SelectedIndexChanged
事件处理程序中创建一个后台线程来获取图形数据,一旦完成,就更新对话窗口(例如this.Dispatcher.Invoke(...)
)。
虽然我不明白为什么你没有通过实施第2点来实现这一点......