关于我正在使用VB.NET开发的应用程序的问题。我想使用进度条显示我的SqlBulkCopy
程序的进度。我查了一些方法,并想知道在AddHandler
程序中是否使用SqlBulkCopy
,使用SqlRowsCopied
是计算进度的可能方法。如果是这样,我将如何实现这一点,因为我对VB.NET中的进度条有点新意。让我知道如果有更好的解决方法,所有答案都非常感谢!谢谢!只是我的SqlBulkCopy
被执行的一小段。
(仅供参考:没有显示我尝试使用进度条的任何内容)
进度条名为toolStripProgressBar
:
Dim copy As New SqlBulkCopy(con)
For Each dc As DataColumn In dtDataCopy.Columns
copy.ColumnMappings.Add(dc.ColumnName, dc.ColumnName)
Next
copy.DestinationTableName = TableName
copy.BulkCopyTimeout = 360
copy.BatchSize = 1000
copy.WriteToServer(dtDataCopy)
copy.Close()
答案 0 :(得分:1)
正如文档所述,SqlRowsCopied
事件取决于NotifyAfter
属性,而不是BatchSize
属性。您可以将Maximum
的{{1}}设置为总行数,将ProgressBar
属性设置为与Step
值相同。每次引发NotifyAfter
事件时,您都会在SqlRowsCopied
上调用PerformStep
,它将按照已复制的行数递增。
或者,您只需将ProgressBar
值分配给e.RowsCopied
的{{1}}属性即可。有关该事件的MSDN文档中提供了一个代码示例。希望您在发布此问题之前咨询过该文档。