Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步加载的用户控件_C#_Winforms_Asynchronous - Fatal编程技术网

C# 异步加载的用户控件

C# 异步加载的用户控件,c#,winforms,asynchronous,C#,Winforms,Asynchronous,我们正在开发一个winform应用程序,它执行数据密集型工作。我们的查询(BI任务)可能需要一分钟才能完成。我们有四个重要的进程,我们希望在一个窗口中显示它们的状态。考虑到这一点,我们开发了四个用户控件,每个控件都以主窗体显示。有三位研究人员正在研究他们自己的用户控件,我们正在将它们集成到主应用程序中 问题是,当一个用户控件刷新时,应用程序将冻结。我应该采取什么方法使用户控件异步刷新?为了创建一个基类或接口,迫使其他控件的开发人员遵循相同的方法,我是否可以使用一个解决方案?如果您的查询是在不同的

我们正在开发一个winform应用程序,它执行数据密集型工作。我们的查询(BI任务)可能需要一分钟才能完成。我们有四个重要的进程,我们希望在一个窗口中显示它们的状态。考虑到这一点,我们开发了四个用户控件,每个控件都以主窗体显示。有三位研究人员正在研究他们自己的用户控件,我们正在将它们集成到主应用程序中


问题是,当一个用户控件刷新时,应用程序将冻结。我应该采取什么方法使用户控件异步刷新?为了创建一个基类或接口,迫使其他控件的开发人员遵循相同的方法,我是否可以使用一个解决方案?

如果您的查询是在不同的线程上进行的,我会查看BackgroundWorkery,但问题是迫使其他人使用相同的接口。在这方面我能做些什么吗?顺便说一句,所有用户控件都是自定义控件,它们继承了我们开发的基础控件,使我们能够为每个控件使用公共接口。也许我可以以某种方式修改基控件,以强制每个开发自定义控件的人使用一种方法。如果没有示例代码布局,很难说可以插入带有doquery方法的基类。您有一个示例查询调用吗?基本上,我们有一个Refresh()方法。此方法在FormLoad或任何人刷新窗口时调用。查询非常难看:许多查询从数据库获取数据,对这些记录进行统计(关联、搜索模式…),并在表单上直观地显示它们(在网格、图表、自定义形状等中)。