C# Windows窗体应用程序显示OBDC DB2连接的查询执行/检索时间

C# Windows窗体应用程序显示OBDC DB2连接的查询执行/检索时间,c#,winforms,visual-studio-2010,db2,C#,Winforms,Visual Studio 2010,Db2,我需要进度条或状态消息来显示执行查询时间。现在我拥有的应用程序只是冻结了,我无法显示已经过了多少时间以及查询执行的位置(执行与检索) 我在这方面没有发现太多,我不知道这是否可能,因为它冻结了,有没有办法取消查询 谢谢 要在执行长时间运行的查询时拥有一个未冻结的应用程序,您需要在单独的线程上执行它。尝试使用BackgroundWorker。它有ReportProgress,您可以使用它。有两种情况: 1-您有一个批量修改某些表的查询,但它在DB服务器上运行很长时间。在这种情况下,如果可能的话,您可

我需要进度条或状态消息来显示执行查询时间。现在我拥有的应用程序只是冻结了,我无法显示已经过了多少时间以及查询执行的位置(执行与检索)

我在这方面没有发现太多,我不知道这是否可能,因为它冻结了,有没有办法取消查询


谢谢

要在执行长时间运行的查询时拥有一个未冻结的应用程序,您需要在单独的线程上执行它。尝试使用
BackgroundWorker
。它有
ReportProgress
,您可以使用它。有两种情况:

1-您有一个批量修改某些表的查询,但它在DB服务器上运行很长时间。在这种情况下,如果可能的话,您可以(这里也有多种情况)将批处理日志写入一些表中。您可以创建临时触发器和临时表查询目标表。触发器将在处理记录时更新临时表。在后台工作程序中,编写SQL查询以查询临时表,并查看记录了多少行。直到作业标记为“完成”(在同一临时表中)为止

2-在这种情况下,很容易跟踪进度,因为在这里,您在代码中一次只执行一行SQL语句。因此,您知道您有多少次更新,并且可以准确地判断,例如“处理1000次中的5次”。在后台工作人员中,您将在
DoWork
中执行此项工作,并且在每次数据库调用时,您都将调用
ReportProgress


如何实现
BackgroundWorker
您可以在线找到1000个示例。对于场景2,这几乎就是它。对于场景1,这取决于你做了什么。实现这一目标可能有10种不同的方法。但是主要的逻辑仍然存在——一个单独的线程正在跟踪某个设备的进程(在本例中为表)

查看进度条实现的公认答案谢谢我想我不是100%知道我在问什么,但这正是我想要的谢谢!!