1

祝大家新年快乐,

我正在开发一个 C# Winforms SDI 应用程序,它严重依赖后台工作线程来执行长时间运行的数据库查询。我的主对话框包含一个进度标签和进度条;还有一个工具条菜单,其中包含两个工具条标签和两个工具条进度条。我通过事件处理程序 (OnUpdateProgress(object sender UpdateProgressEventArgs e)) 调用的委托来更新进度标签和进度条。

我正在寻求您的专家意见,关于在尝试实现更“通用”和可重用的方法时调用 UI 委托时我应该使用什么方法。

到目前为止,我已经考虑了 2:

(1) 当从主对话框实例化工作线程以执行后台任务时,将句柄传递给标签和进度条控件以在事件处理程序回调时进行更新,以及 (2) 传入名称调用事件处理程序时要更新的标签和进度条;并使用 Form.Find 方法检索匹配控件的 Control[]。

我无法决定使用这些方法中的哪一种;或者确实有更好的方法来做到这一点。我认为方法(1)有点笨拙和不优雅;但是该方法 (2) 容易失败,尽管 Form.Find 方法可能会引入不合理的开销来搜索嵌入式工具条菜单控件。

我已经搜索了以前提出/回答的问题以寻求解决方案。

非常感谢您的建议!

4

0 回答 0