ワーカー オブジェクトをコントロール コレクションに追加する理由がわかりません...
電子メールを送信するには、オブジェクト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)
{
}