/// <summary> /// worker do work event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void worker_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker wk = sender as BackgroundWorker; EmailTaskBuilder tb = e.Argument as EmailTaskBuilder; bool start = tb.InitializeTaskBuilder(); if (!start) { e.Result = 0; // failed at initializing task return; } wk.ReportProgress(0, string.Format("{0}% ({1}/{2})", tb.Percentage, tb.Current, tb.Total)); while (tb.HasNext) { tb.StepNext(); wk.ReportProgress(tb.Percentage, string.Format("{0}% ({1}/{2})", tb.Percentage, tb.Current, tb.Total)); } bool end = tb.Flush(); if (!end) { e.Result = -1; // failed at ending task tb.RemoveTask(); return; } wk.ReportProgress(100, string.Format("{0}% ({1}/{2})", tb.Percentage, tb.Current, tb.Total)); e.Result = 1; // success }
private void sbSend_Click(object sender, EventArgs e) { //SendEmailState = SendEmail.Send( // SenderAddress, ReceiverAddress, // txtTitle.Text, htmlEditorMsg.PrintingRichEditControl.HtmlText, // SmtpServerAddress, SmtpServerAccount, SmtpServerPassword); //if (SendEmailState) XtraMessageBox.Show("邮件发送成功!"); //else XtraMessageBox.Show("邮件发送失败!"); DateTime day = dateEdit1.DateTime; DateTime time = timeEdit1.Time; EmailTaskBuilder taskbuilder = new EmailTaskBuilder(); taskbuilder.Receivers = this.Receivers; taskbuilder.TaskStartTime = new DateTime(day.Year, day.Month, day.Day, time.Hour, time.Minute, time.Second); taskbuilder.EmailSubject = txtTitle.Text; taskbuilder.EmailContentTemplate = htxContent.BodyHtml; taskbuilder.Shop = selectedShop; EmailTaskProcess process = new EmailTaskProcess(); process.TaskBuilder = taskbuilder; if (DialogResult.OK == process.ShowDialog()) { XtraMessageBox.Show("所有邮件已成功添加到邮件发送队列,等待稍候发送!"); } }
public EmailTaskProcess() { InitializeComponent(); TaskBuilder = new EmailTaskBuilder(); worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; worker.WorkerSupportsCancellation = false; worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted); worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged); worker.DoWork += new DoWorkEventHandler(worker_DoWork); }