C# 我需要带SQLBulkcopy的progressbar

C# 我需要带SQLBulkcopy的progressbar,c#,progress-bar,sqlbulkcopy,C#,Progress Bar,Sqlbulkcopy,我的申请需要进度条。我正在通过文本文件将数据上传到SQL Server,但这需要很多时间,而且我也使用了后台工作程序,但工作不正常,所以我只需要知道是否有任何方法可以将进度条与SQL批量复制一起使用,它告诉我插入了2000条记录? 这是我的密码: public void bulkinsert(string tablename, DataTable dt) { if (con.State == ConnectionState.Closed) {

我的申请需要进度条。我正在通过文本文件将数据上传到SQL Server,但这需要很多时间,而且我也使用了后台工作程序,但工作不正常,所以我只需要知道是否有任何方法可以将进度条与SQL批量复制一起使用,它告诉我插入了2000条记录? 这是我的密码:

 public void bulkinsert(string tablename, DataTable dt)
    {
        if (con.State == ConnectionState.Closed)
        {
            con.Open();
        }
        SqlBulkCopy blkcopy = new SqlBulkCopy(con);
        blkcopy.DestinationTableName = tablename;
        blkcopy.BatchSize = dt.Rows.Count;
        blkcopy.BulkCopyTimeout = 1500;
        blkcopy.WriteToServer(dt);
        blkcopy.Close();

    }
我非常感谢您的回复。

您需要处理以下事件:

每次NotifyAfter指定的行数 属性已被处理


我还将使用Async Await并使用一个而不是后台工作程序

我建议在这种情况下使用加载轮,可能带有计时器,让用户知道它正在做什么。否则,进度条的准确性会很糟糕,如果进度条停留在99%,用户肯定会认为有问题。使用SqlBulkCopy类的NotifyAfter属性指定通知阈值并捕获SqlRowsCopied事件以更新progressbar。看:谢谢@康拉德·弗里克斯。。这真的很有帮助,我的应用程序运行良好,现在我可以看到随着时间的推移正在处理的记录。我有一个小问题要问你,当我们使用notify after属性时,它是否会减慢进程?你可以使用
System.Diagoritics.Stopwatch
,在处理SqlRowsCopied和不处理SqlRowsCopied的情况下对其进行测试,看看有什么区别。如果有差异,你可以问你的用户是否值得拥有进度条是的,我用秒表检查过。。。这是2至3分钟的延迟过程中,但我想这是微不足道的,所以无论如何感谢帮助人!