110,536
社区成员
发帖
与我相关
我的任务
分享
//BackgroundWorker
DateTime now;
TimeSpan ts;
private void button3_Click(object sender, EventArgs e)
{
if (backgroundWorker1.IsBusy)
return;
now = DateTime.Now;
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker bw = sender as BackgroundWorker;
for (int i = 0; i < 100000; i++)
{
bw.ReportProgress(i,100000);
Thread.Sleep(1); }
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
label3.Text = e.ProgressPercentage.ToString();
progressBar3.Value = e.ProgressPercentage / 1000;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
progressBar3.Value = 100;
ts = DateTime.Now - now;
MessageBox.Show("BackgroundWorker:"+ts.TotalMilliseconds);
}
//線程+委託
private void button2_Click(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart(ShowNum));
th.Start();
}
public delegate void UpdateText(int i);
public void UpdateTextLabel(int i)
{
if (label2.InvokeRequired)
{
UpdateText ut = new UpdateText(UpdateTextLabel);
label2.Invoke(ut, i);
}
else
{
label2.Text = i.ToString();
progressBar2.Value = i / 1000;
}
}
public void ShowNum()
{
DateTime now = DateTime.Now;
for(int i =0;i< 100000;i++)
{
UpdateTextLabel(i);
}
DateTime now1 = DateTime.Now;
TimeSpan ts = now1 - now;
MessageBox.Show("線程+委託:" + ts.TotalMilliseconds);
}