111,092
社区成员




public partial class Form1 : Form
{
private BackgroundWorker bw = new BackgroundWorker();
// string str1到 str9定义不贴了
IList<Model.sendMes> messList = new SQLServerDAL.sendMes().GetAllList("top 10 *", null, "id asc");// id desc
FULLTUNNELCONTROLLib.FullTunnelServiceControlClass my = new FULLTUNNELCONTROLLib.FullTunnelServiceControlClass();
int successNum = 0;
public Form1()
{
InitializeComponent();
}
private void btnSendAll_Click(object sender, EventArgs e)
{
ProgressForm progressForm = new ProgressForm();
progressForm.Show();
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.ProgressChanged += new ProgressChangedEventHandler(progressForm.OnProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(progressForm.OnProcessCompleted);
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}
}
//取消
private void btnCancel_Click(object sender, EventArgs e)
{
if (bw.IsBusy)
{
this.lbProgress.Text = "Cancelling...";
bw.CancelAsync();
}
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
sendMes((BackgroundWorker)sender, e);
}
private void sendMes(BackgroundWorker worker, DoWorkEventArgs e)
{
for (int i = 0; i < messList.Count; i++)
{
if (worker.CancellationPending == true)
{
e.Cancel = true;
break;
}
else
{ worker.ReportProgress((i + 1) * (100 / messList.Count));
Thread.Sleep(500);
}
}
}
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//群发 ----耗时的方法
try
{
for (int i = 0; i < messList.Count; i++)
{
str5 = messList[i].mobilephone.ToString();
int ErrorMessage = Convert.ToInt32(my.FullTunnelServiceControl(ref str1, ref str2, ref str3, ref str4, ref str5, ref str6, ref str7, ref str8, ref str9));
if (ErrorMessage.ToString() == "1")
{
successNum = successNum + 1;
}
}
this.lbProgress.Text = ("已发送" + e.ProgressPercentage.ToString() + "%");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}
}
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled == true)
{
this.lbProgress.Text = "Cancelled";
}
else if (e.Error != null)
{
this.lbProgress.Text = "Error";
}
else
{
this.lbProgress.Text = "Success!";
MessageBox.Show("发送完毕");
}
}
}
private void sendMes(BackgroundWorker worker, DoWorkEventArgs e)
{
for (int i = 0; i < messList.Count; i++)
{
//群发 ----耗时的方法
str5 = messList[i].mobilephone.ToString();
int ErrorMessage = Convert.ToInt32(my.FullTunnelServiceControl(ref str1, ref str2, ref str3, ref str4, ref str5, ref str6, ref str7, ref str8, ref str9));
if (ErrorMessage.ToString() == "1")
{
successNum = successNum + 1;
}
worker.ReportProgress((i + 1) * (100 / messList.Count));
if (worker.CancellationPending == true)
{
e.Cancel = true;
break;
}
else
{
Thread.Sleep(500);
}
}
}
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
try
{
this.lbProgress.Text = ("已发送" + e.ProgressPercentage.ToString() + "%");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}
}
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.ProgressChanged += new ProgressChangedEventHandler(progressForm.OnProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(progressForm.OnProcessCompleted);