不知道为什么要将工作对象添加到控件集合中...
要发送电子邮件,您可以简单地传递一个绑定到 objects 的工作方法DoWorkEventHandler,看起来您已经在那里:-
BackgroundWorker bw = new BackgroundWorker();
this.Controls.Add(bw); //REMOVE THIS LINE
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
//If your email relies on data from some object you can pass it in as a parameter
bw.RunWorkerAsync([email object])
然后你需要设置一个工作方法来处理电子邮件的发送: -
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
Email email = (Email)sender;
//Send email
}
您可能还想知道当前作业何时完成,在这种情况下,您可以在 do work 方法中使用类似这样的内容:-
this.Invoke(new JobDone(ReportProgress), result);
委托定义为:
private delegate void JobDone(Result result);
该ReportProgress方法看起来像:-
private void ReportProgress(Result result)
{
}