【发布时间】:2014-04-16 12:59:33
【问题描述】:
我有 .NET 4.5 Windows 窗体应用程序,其中一种方法需要一段时间才能完成(它是一个 BulkCopy 函数,它加载大量数据并推送到 SQL 中)。
我想使用 BackgroundWorker 和 ReportProgress,以便用户知道发生了什么事。我制作了一些使用它的应用程序,但是当 BackgroundWorker 工作时,它们都处于某种循环中,我可以轻松地在每个循环步骤中报告进度。
这里我有一个问题,因为没有循环,代码步骤是:
- worker 启动异步
- 将数据从 DB2 获取到数据表中(这花费的时间最多)
- SqlBulk 将数据表复制到 SQL 表中
我需要在第 1 步和第 2 步之间开始报告进度(尽管是一个虚假的进度百分比,一个简单的旋转进度条就足够了),并在第 3 步之后结束报告进度。
任何人都有类似的问题/解决方案,我想我可以只显示一个 GIF 图像并在工作完成后将其隐藏,但我认为这将不起作用,因为表单冻结(没有响应消息)。
【问题讨论】:
-
@huMpty duMpty:这不是一个特定的编码问题,我一直在寻找解决方案,为了获得更多可见性,我标记了 c# 和 vb.net。