gpt4 book ai didi

.net - 如何正确取消并重新启动BackgroundWorker进程?

转载 作者:行者123 更新时间:2023-12-04 04:01:35 25 4
gpt4 key购买 nike

我的应用程序的用户将HTML输入到TextBox控件中。

我希望我的应用程序在后台验证其输入。

因为我不想锤打验证服务,所以我尝试在每次验证之前延迟一秒钟。

但是,我似乎无法正确中断已经在运行的BackgroundWorker进程。

我的Visual Basic代码:

Sub W3CValidate(ByVal WholeDocumentText As String)

'停止任何已经在运行的验证
如果ValidationWorker.IsBusy然后
ValidationWorker.CancelAsync()
'等待它准备好
而ValidationWorker.IsBusy
暂停了百分之一秒
System.Threading.Thread.Sleep(新的TimeSpan(0,0,0,0,10))
结束时间
万一

'开始验证
作为W3CValidator =新W3CValidator(WholeDocumentText)的Dim ValidationArgument
ValidationWorker.RunWorkerAsync(ValidationArgument)

结束子

似乎在调用我的BackgroundWorker的CancelAsync()之后,它的IsBusy永远不会变为False。它陷入无限循环。

我究竟做错了什么?

最佳答案

尝试这样的事情:

bool restartWorker = false;

void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// add other code here
if (e.Cancelled && restartWorker)
{
restartWorker = false;
backgroundWorker1.RunWorkerAsync();
}
}

private void button1_Click(object sender, EventArgs e)
{
if (backgroundWorker1.IsBusy)
{
restartWorker = true;
backgroundWorker1.CancelAsync();
}
else
backgroundWorker1.RunWorkerAsync();
}

关于.net - 如何正确取消并重新启动BackgroundWorker进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com