1

I have a VB.NET Application. In the same have some query, which result will display in a DataGridView. It need 2 to 3 min to execute my query. Now I want to show a Progressbar on Status bar that will display the Data Retrieve progress . After Complete, it will hide from Statusbar and a Label will show "Completed". If any expert help me I will be thankful to him.

4

1 回答 1

2

你的问题涵盖了很多领域。我首先想到的是,为什么你有一个查询需要这么长时间才能运行,并且可以优化它吗?您返回的数据集是多少位?10 行、100 行、100000 行?如果数据集很大,您是否使用分页?ADO.Net 确实提供了异步接口模型,请参见此处Async SQLCommand。一种可能性是发出您的查询异步然后显示您的进度条,并在您收到完成通知时关闭进度条。

另一种选择是在另一个线程中启动查询,但如果您可以使用异步 SQLCommand,则可能不需要这样做。但是,如果您想显示一个更新以显示 %complete 的进度条,而不是“等待”指示器,那将是一个挑战。一方面,您不知道查询需要多长时间。这不是一个确定性的过程,例如从磁盘读取文件,您可以在其中估计文件大小、传输速度等。我认为 SQL Server 中没有任何机制可以查询,“我的查询进展如何?” 一个糟糕且浪费的替代方案是首先运行一个查询以获取您期望的记录数,然后将获取查询划分为具有一些范围参数的较小子查询并在“块”中执行。同样,这不是有效的。也许有人知道替代方案。

于 2013-06-29T20:03:01.433 回答