新年快乐,
我正在开发一个C#Winforms SDI应用程序,该应用程序严重依赖后台工作线程来执行长时间运行的数据库查询。我的主对话框包含进度标签和进度条;还有一个Toolstrip菜单,其中包含两个ToolStrip标签和两个Toolstrip Progress Bars。我通过事件处理程序调用的委托更新进度标签和进度条(OnUpdateProgress(对象发送器UpdateProgressEventArgs e))。
我正在寻求您的专家意见,在调用UI委托时,我应该使用什么方法来尝试实现更“通用”和可重用的方法。
因此,我考虑过2:
(1)当从主对话框实例化一个工作线程以执行后台任务时,将一个句柄传递给Label和Progress Bar控件,以便在事件处理程序回调时进行更新,并且 (2)在调用事件处理程序时传递要更新的标签和进度条的名称;并使用Form.Find方法检索匹配控件的Control []。
我无法决定使用哪种方法;或者确实如果有更好的方法可以做到这一点。我相信方法(1)有点笨拙而且不优雅;但是方法(2)很容易失败,尽管Form.Find方法可能会引入不合理的开销搜索嵌入式工具栏菜单控件。
我已经搜索了之前提出/已回答的问题以寻求解决方案。
如果非常感谢你的建议!