C# 在后台代码中完成backgroundWorker\u Runworker之后,如何重复backgroundWorker\u DoWork?
有一个按钮如下所示:C# 在后台代码中完成backgroundWorker\u Runworker之后,如何重复backgroundWorker\u DoWork?,c#,visual-studio-2010,.net-4.0,backgroundworker,windows-applications,C#,Visual Studio 2010,.net 4.0,Backgroundworker,Windows Applications,有一个按钮如下所示: private void btnStartAdventure_Click(object sender, EventArgs e) { if (backgroundWorker5.IsBusy) { btnStartAdventures.Enabled = false; lblStatusValueInAdventures.Text = "Canceling...";
private void btnStartAdventure_Click(object sender, EventArgs e)
{
if (backgroundWorker5.IsBusy)
{
btnStartAdventures.Enabled = false;
lblStatusValueInAdventures.Text = "Canceling...";
backgroundWorker5.CancelAsync();
}
else
{
txtLogInAdventures.Text = string.Empty;
btnStartAdventures.Text = "Cancel";
lblUsersDoneCountValueInAdventures.Text = "---";
lblStatusValueInAdventures.Text = "Running...";
backgroundWorker5.RunWorkerAsync();
}
}
我想在backgroundWorker\u runworker完成
作业后再次调用btnStartAdventure\u单击
事件因此,将有一个永不结束的循环。
我说: 在
backgroundWorker\u RunWorkerCompleted()的末尾
现在我应该使用什么代码来调用btnStartAdventure\u再次单击?
定时器是否适合我的用途?
我如何通过做那项工作来防止上吊和撞车
提前感谢要以编程方式启动btnStartAdventure\u单击事件处理程序,您可以调用
// Call the Click event of btnStartAdventure.
btnStartAdventure.PerformClick();
只需将该代码放在backgroundWorker\u RunWorkerCompleted
事件的末尾
有关更多信息,请参阅文章。PerformClick可以完成这项工作,但不是一种好的做法。最好将impl代码重构为一个单独的方法,您可以从两个位置调用它。这样做行不通,您无法启动仍然繁忙的BGW。没错,BGW在其完成过程中仍然“繁忙”。仍然可以每次为backgroundWorker5分配一个新的Bgw。我宁愿跳过计时器。只要使用计时器就行了。将Click事件处理程序中的代码移动到一个单独的方法,您可以从计时器的Tick事件处理程序调用该方法。
// Call the Click event of btnStartAdventure.
btnStartAdventure.PerformClick();