【发布时间】:2011-11-02 08:16:08
【问题描述】:
我正在尝试更新主窗体上的进度条,而工作是在不同的班级中完成的。例如:
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,勾选 Thrown 复选框以获得 CLR 异常。
标签: c# backgroundworker