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

标签 c# wpf cefsharp

我有一个下载链接列表,我正在使用 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/

相关文章:

c# - 有没有办法告诉 Visual Studio 在 Debug模式下默认显示某些成员值?

wpf - 从 Winforms 到 WPF 的时间?

c# - 如何通过元素选择移动 Canvas ?

cefsharp - 如何包含 CEFSharp 所需的 VC++ 可再发行文件

c# - 使用 wpf 4 打印的最佳方法

c# - 如何在 MVC6 中正确注入(inject) HttpContext

c# - 将音频文件流式传输到另一台计算机

c# - CefSharp.BrowserSubprocess.exe 已停止工作

winforms - 哪些文件需要用cefsharp winforms应用程序打包

c# - 在 View 中执行处理程序的子请求时出错