gpt4 book ai didi

c# - BackgroundWorker 支持取消

转载 作者:行者123 更新时间:2023-11-30 16:26:01 24 4
gpt4 key购买 nike

我使用 BackgroundWorker 但在报告取消时遇到问题:

BackgroundWorker worker = new BackgroundWorker();
worker.WorkerSupportsCancellation = true;
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
expensiveMethod();
}

DoWork 应定期检查取消请求是否处于待处理状态。如果我不能修改 expensiveMethod,该怎么做?

最佳答案

如果您不能修改您的 expensiveMethod(),那么就没有直接的方法来处理取消。

如果 expensiveMethod() 正在处理一些大数据 block ,也许您可​​以拆分该数据并在循环中处理较小(不太长)的 block ,并在每次迭代后检查取消标志.像这样:

//...
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
do
{
provideNextChunk();
expensiveMethod();
}
while (hasMoreData && !args.Cancel);
}

关于c# - BackgroundWorker 支持取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375895/

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