【发布时间】:2012-10-08 10:58:46
【问题描述】:
这就是我在代码中的做法: 在 backgroundWorker DoWork 事件中我做了:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
_busy.WaitOne();
this.Invoke(new MethodInvoker(delegate { label2.Text = "Website To Crawl: "; }));
this.Invoke(new MethodInvoker(delegate { label4.Text = mainUrl; }));
webCrawler(mainUrl, levelsToCrawl, e);
}
然后在我做的暂停按钮点击事件中:
private void button4_Click(object sender, EventArgs e)
{
_busy.Reset();
}
在我做的恢复按钮点击事件中:
private void button5_Click(object sender, EventArgs e)
{
_busy.Set();
}
但是当我点击启动进程时它不起作用:
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
button1.Enabled = false;
this.Text = "Processing...";
label6.Text = "Processing...";
label6.Visible = true;
button2.Enabled = false;
checkBox1.Enabled = false;
checkBox2.Enabled = false;
numericUpDown1.Enabled = false;
button3.Enabled = true;
}
只有当我单击恢复按钮时才会发生任何事情,然后当我单击暂停按钮时不会发生任何事情。
我希望当我点击开始进程按钮时它会启动 backgroundWorker 常规然后当点击暂停按钮时它会暂停并且恢复按钮它将恢复。
我做错了什么?有人可以修复我的代码吗?
【问题讨论】:
-
已打开的问题进行编辑...aaa 并放弃了 :)
-
只修改一个工人可以访问的布尔值?我会在 backgroundWorker 中解决这个问题,而不是通过暂停线程本身。
-
Aphelion 请给我一个例子谢谢。
-
_busy是什么?
标签: c#