我正在尝试更新主窗体上的进度条,并在不同的类中完成工作。例如:C#,使用不同类别的后台工作人员更新进度栏
private void transfer_Click(object sender, EventArgs e)
{
Guid aspnetUserId = Guid.Parse(System.Configuration.ConfigurationSettings.AppSettings["ASPNetUserID"]);
WC1toWC2Transfer transfer = new WC1toWC2Transfer(aspnetUserId);
backgroundWorker1.RunWorkerAsync(transfer);
}
然后在后台方法实际上调用方法:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
WC1toWC2Transfer transfer = e.Argument as WC1toWC2Transfer;
transfer.WC1ToWC2EmployerTransfer(log, wc1ConnStr, wc2ConnStr, progressBar1);
}
在WC1ToWC2EmployerTransfer方法,我设置了进度条的最大值和更新值每次的东西转移到在这个方法中的数据库,但是当我这样做时没有任何反应。在数据库中运行存储过程的方法中有代码,但只要它碰到那部分代码,它就停止调试,我必须再次运行该过程。
我在这里做错了什么?我是否需要重写我拥有的所以实际方法是以主要形式存在,而不是在不同的班级中?我是一名初级开发人员(几个月前刚开始),所以如果我正在做一些明显错误的事情,或者我没有足够好地解释这件事,请原谅我。
任何帮助将不胜感激。
不确定这是关于什么,但你一定要排除故障“停止调试”。 BackgroundWorker吞下异常并将它们传递给具有e.Error属性的RunworkerCompleted事件处理程序。一些你不想忽视的东西。最好的方法是不要忽略它,使用Debug + Exceptions,为CLR异常勾选Thrown复选框。 –