gpt4 book ai didi

c# - WPF/C# 在 DoWork 外取消 BackgroundWorker 调用

转载 作者:行者123 更新时间:2023-11-30 21:14:06 29 4
gpt4 key购买 nike

我有一个 BackgroundWorker DoWork 函数如下

    private void WorkerGetFeedData(object sender, DoWorkEventArgs args)
{
_feed.FetchUserData(_userNameCollection);
}

FetchUserData 是同一解决方案中另一个项目中另一个类(其对象是_feed)中的一个函数。数据获取过程需要相当长的时间,我希望用户能够在必要时取消该过程。我如何将取消操作从用户传递到别处的函数调用并停止它?

最佳答案

您可以使用 BackgroundWorker.CancelAsync 方法。这里有更多信息和示例:MSDN

为了更准确地解决您的问题,请将工作人员传递给 FetchUserData。它是发送者参数。然后在 FetchUserData 函数中,您可以检查是否设置了标志 BackgroundWorker.CancellationPending 并完成您的方法。

void FetchUserData(IEnumerable<Users> userNameCollection, BackgroundWorker worker)
{
// ...

if(worker.CancellationPending)
{
// Finish method..
}
}

和 WorkerGetFeedData 方法:

private void WorkerGetFeedData(object sender, DoWorkEventArgs args)
{
var worker = sender as BackgroundWorker;
if(worker != null)
_feed.FetchUserData(_userNameCollection, worker);
}

关于c# - WPF/C# 在 DoWork 外取消 BackgroundWorker 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452424/

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