111,098
社区成员




using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsFormsApp16
{
public partial class Form1 : Form
{
private BackgroundWorker bgWorker = new BackgroundWorker();
private int SUM=0;
public Form1()
{
InitializeComponent();
bgWorker.DoWork += bgWorker_DoWork;
bgWorker.RunWorkerCompleted += bgWorker_WorkerCompleted;
bgWorker.RunWorkerAsync();
}
public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i <= 10000; i++)
{
SUM += new Random().Next(i,100001);
System.Console.WriteLine("第"+i.ToString() +"次");
}
}
public void bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("已完成bgWorker_WorkerCompleted");
MessageBox.Show(this.bgWorker.IsBusy.ToString() );
}
private void Form1_Load(object sender, System.EventArgs e)
{
//while (this.bgWorker.IsBusy) { };
MessageBox.Show("已完成bgWorker_DoWork,把SUM赋值给UI界面");
label1.Text = SUM.ToString();
}
}
}
private void Form1_Load(object sender, System.EventArgs e)
{
while (this.bgWorker.IsBusy) {
Application.DoEvents();
};
MessageBox.Show("已完成bgWorker_DoWork,把SUM赋值给UI界面");
label1.Text = SUM.ToString();
}
while (this.backgroundWorker1.IsBusy)
{
progressBar1.Increment(1);
// Keep UI messages moving, so the form remains
// responsive during the asynchronous operation.
Application.DoEvents();
}
public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
int sum = 0;
for (int i = 0; i <= 10000; i++)
{
sum += new Random().Next(i, 100001);
System.Console.WriteLine("第" + i.ToString() + "次");
}
e.Result = sum;
}
public void bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
label1.Text = "" + e.Result;
MessageBox.Show("已完成bgWorker_WorkerCompleted");
}
private void Form1_Load(object sender, System.EventArgs e)
{
label1.Text = "计算中...";
}
... 但我加上这句代码后才惊奇地发现陷入了死循环,bgWorker.IsBusy怎么一直是true呢