gpt4 book ai didi

c# - 在循环 wpf 中执行下一个代码之前等待

转载 作者:行者123 更新时间:2023-11-30 18:18:03 25 4
gpt4 key购买 nike

我有一个下载链接列表,我正在使用 cefsharp 下载。我无法使用 webclient 来下载文件,用户必须登录。

这是我的代码:

foreach (var lnk in collection) {
Console.WriteLine(lnk);
await TestAsync(lnk);
}

private Task TestAsync(string lnk) {
return Task.Run(() => TaskToDo(lnk));
}

private async void TaskToDo(string lnk) {
await wb.GetBrowser().MainFrame.EvaluateScriptAsync(String.Format("window.location.href = '{0}'", lnk));
}

在我的循环中,我有一个 Console.WriteLine 来打印链接。在我的程序输出中,它打印了所有链接,然后下载了一个文件。问题是它只下载最后一个文件。我需要它等待并下载下一个文件。

我该如何解决这个问题?

最佳答案

你的问题是

async void

这不会被调用者阻止,这就是为什么您在不需要时执行 Task.Run 的原因。

  foreach (var item in collection)
{
Console.WriteLine(lnk);
await TestAsync(lnk);
}

private Task TestAsync(string lnk)
{
return TaskToDo(lnk);
}

private Task TaskToDo(string lnk)
{
return wb.GetBrowser().MainFrame.EvaluateScriptAsync(String.Format("window.location.href = '{0}'", lnk));
}

关于c# - 在循环 wpf 中执行下一个代码之前等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239518/

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