我有问题,我使用async await编写了简单的代码,但编译器检测到错误,我在stackoverflow中发现解决问题以更改lang版本我的项目解决方案看起来:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<LangVersion>7.2</LangVersion>
</PropertyGroup>
</Project>
但错误仍然存在。 然后我将项目构建中的语言c#版本更改为7.2,但没有任何事情发生。
public сlass Program
{
public void Main(string[] args)
{
Run();
}
private static async Task<int> AsyncDoItAsync()
{
HttpClient client = new HttpClient();
Task<String> message = client.GetStringAsync("http://mdsm.microsoft.com");
while (!message.IsCompleted)
{
DoWhenChechink();
}
string url = await message;
return url.Length;
}
public static void DoWhenChechink()
{
Console.WriteLine("Waiting");
Thread.Sleep(75);
}
private static async void Run() {
int a = await AsyncDoItAsync();
}
}
答案 0 :(得分:3)
Main
方法必须为static
,因此请public static void Main(string[] args)
。但是,您的Run
是async void
,所以现在它会立即退出。相反,您的Main
方法应该 - 如果使用最新的编译器 - 使用:
public static Task Main(string[] args) => AsyncDoItAsync();
然后知道等待(等待)完成。您也可以将其写为:
public static async Task Main(string[] args) => await AsyncDoItAsync();
但这并没有真正添加任何东西。同样,这里Run
方法没有任何意义;您的Main
方法也可以直接与AsyncDoItAsync()
对话。