gpt4 book ai didi

c# - 如何正确调用Main中的await方法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:58:20 26 4
gpt4 key购买 nike

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TaskConsole
{
class Program
{
static void Main(string[] args)
{
test();
}

static async Task<string> ReadTextAsync()
{
string textContents;
Task<string> readFromText;

using (StreamReader reader = File.OpenText("email.txt"))
{
readFromText = reader.ReadToEndAsync();
textContents = await readFromText;

}

return textContents;
}

static async Task test ()
{
string capture = await ReadTextAsync();
Console.WriteLine(capture);
}
}
}

我有以下代码可以使用异步从文本文件中读取。我从中学到了post Microsoft 使用 StreamReader 实现的示例不正确,因此作为学习练习,我决定更正它。当测试方法不返回任何任务时,我如何正确地从 main 调用测试方法。我读了一点书,了解到使用 async void 是不好的做法。就我而言,我该怎么办?

旁注:我不知道我是否实现错误,但我无法显示我的文本。我以非异步方式尝试过它并且它有效,但是,当我使用异步时它显示空白,请按任意键继续“

最佳答案

How would I properly call the test method from main, when the test method doesn't return any task.

因为 Main 不能被修改为 async,你必须显式调用 Task.Wait :

Test().Wait();

这是您应该在异步调用中阻塞的唯一地方

关于c# - 如何正确调用Main中的await方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31118410/

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