为了账号安全,请及时绑定邮箱和手机立即绑定

异步等待以及如何避免等待 Task.Delay

异步等待以及如何避免等待 Task.Delay

C#
湖上湖 2021-10-09 10:48:32
我正在尝试从 URL 中检索 100 页。Url 的格式如下: https://www.someBlogSite.com/thread.php?t=xxxx&page=所以我的 for 循环基本上遍历这些页面并将结果存储在本地磁盘上的 html 文件中。https://www.someBlogSite.com/thread.php?t=xxxx&page=1 https://www.someBlogSite.com/thread.php?t=xxxx&page=2 。. https://www.someBlogSite.com/thread.php?t=xxxx&page=99这是我的工作代码,有没有办法避免使用 await Task.Delay(10000)?我必须使用它的原因是因为否则我的代码会在检索到所有 100 页内容之前退出。
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

永远不要使用 async void(除非你真的知道你在做什么,或者 Visual Studio 为你生成了一个,例如一个事件处理程序)。如果您不需要从async方法中返回任何内容,请让它返回一个Task(根本没有泛型类型参数)。您的代码实际上不必返回它;编译器为你做这件事。


static async Task WriteTextAsync(string text)

{

    string mydocpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

    using (StreamWriter outputFile = new StreamWriter(Path.Combine(mydocpath, "WriteTextAsync.html")))

    {

        await outputFile.WriteAsync(text);

    }

    //Notice no return statement

}

这将允许您等待它,即使它没有返回值。


await WriteTextAsync(text);

如果您等待任务,Task.Delay()则最后不需要调用。


查看完整回答
反对 回复 2021-10-09
  • 1 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信