【发布时间】:2010-04-10 16:12:25
【问题描述】:
我想在执行可能冗长的数据库操作时向用户显示详细的进度信息。具体来说,在插入/更新可能为数百 KB 或 MB 的数据时。
目前,我正在使用内存中的 DataTables 和 DataRows,然后通过 TableAdapter.Update 调用与数据库同步。这工作得很好而且很花哨,但是单个调用几乎没有机会收集任何类型的进度信息以显示给用户。我不知道有多少数据通过网络传递到远程数据库或其进度。基本上,我只知道 Update 何时返回并假定它已完成(除非有任何错误或异常)。但这意味着我只能显示 0%,然后是暂停,然后是 100%。
我可以计算行数,甚至可以计算出实际修改或添加的行数,我什至可以根据每列的数据类型计算每个 DataRow 的估计大小,使用 sizeof 作为值类型,例如int 并检查字符串或字节数组之类的长度。有了这个,我可能会在更新之前确定估计的总传输大小,但是一旦在 TableAdapter 上调用 Update,我仍然没有任何进度信息。
我只是在使用不确定的进度条或鼠标等待光标时卡住了吗?我是否需要从根本上改变我们的数据访问层才能连接到这种信息?即使我无法将其精确到传输的 KB(如网络浏览器文件下载进度条),我是否至少可以知道每个 DataRow/DataTable 何时完成?
您如何最好地使用 ADO.NET 显示这种进度信息?
【问题讨论】:
标签: .net ado.net progress-bar