如何在Main中正确调用Await方法?

1 c# asynchronous async-await

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);
        }               
    }               
}
Run Code Online (Sandbox Code Playgroud)

我有以下代码使用async从文本文件中读取.我从这篇文章中了解到,微软使用StreamReader实现的例子不正确,所以作为一个学习练习,我决定纠正它.当测试方法不返回任何任务时,如何从main正确调用测试方法.我做了一点阅读,并了解到使用async void是不好的做法.在我的情况下,我该怎么办?

旁注:我不知道我是否实施错误,但我无法显示我的文字.我尝试了非异步方式,但是,当我使用async时,它显示为空白,请按任意键继续"

Yuv*_*kov 5

当测试方法不返回任何任务时,如何从main正确调用测试方法.

因为Main无法修改async,你必须明确地调用Task.Wait它:

Test().Wait();
Run Code Online (Sandbox Code Playgroud)

这是您应该在异步调用上阻止的唯一位置.