新的ASP.NET Web API HttpClient给我带来了一些奇怪的结果。这是我的代码:
有什么想法是什么问题?
class Program {
static async void Main(string[] args) {
var address = "http://localhost:3895/api/urls";
Console.WriteLine(await getStringAsync(address));
Console.ReadLine();
}
public static async Task<string> getStringAsync(string uri) {
var httpClient = new HttpClient();
return await httpClient.GetStringAsync(uri);
}
}
程序执行后,控制台突然弹出并消失,且不再返回。将代码修改如下后,程序可以正常工作:
static void Main(string[] args) {
var address = "http://localhost:3895/api/urls";
Console.WriteLine(getString(address));
Console.ReadLine();
}
public static string getString(string uri) {
var httpClient = new HttpClient();
return httpClient.GetStringAsync(uri).Result;
}
有什么想法是什么问题?
Main
)不能是异步的。它将失败并显示CS4009错误。 - vcsjonesasync Task
而不是async void
。后者是一种“点火并忘记”的形式。 - user29439