{
Button b = (Button)sender;
if (b.Text == "暂停")
{
for (int i = 0; i < mrs.Count; i++)
{
mrs[i].Reset();
}
b.Text = "继续";
}
else
{
for (int i = 0; i < mrs.Count; i++)
{
mrs[i].Set();
}
b.Text = "暂停";
}
}
void bw_DoWork(object sender, DoWorkEventArgs e)
{
int j = Convert.ToInt32(e.Argument);
for (int i = j; i < 1000; i = i + t)
{
if (((BackgroundWorker)sender).CancellationPending)
{
e.Cancel = true;
return;
}
string item = String.Format("线程{0}正在操作数据{1}", j + 1, i);
this.Invoke((MethodInvoker)delegate
{
this.richTextBox1.Text += item + Environment.NewLine;
});
Thread.Sleep(200);
mrs[j].WaitOne();
}
}
void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
bws.Remove(sender as BackgroundWorker);
if (bws.Count == 0)
{
if (e.Cancelled)
{
this.richTextBox1.Text += "线程已经停止";
}
else
{
this.richTextBox1.Text += "线程已经完成";
}
}
}
至此,所有的代码都奉上了,多个线程操作会带来很多意向不到的麻烦,比如多个线程同时把数据写入一个文件,多线程更新datatable等,会让软件莫名其妙的自动退出,.net2.0里还没有绝对线程安全的数据集,很多大佬都说用lock,但我对lock也是一知半解,还请大家赐教赐教,如上有什么说的不对,也请大家多多指点。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27007-6.html
电影很期待
马上宣布将在南海相关区域进行军事演习
我的烊烊