【发布时间】:2014-08-10 14:13:57
【问题描述】:
我正在关注this example,它可以在控制台应用程序中运行,但后来我尝试在 Windows 窗体应用程序中运行,它在遇到await client.GetAsync("api/branches/1035") 行时停止运行
有什么不同?
控制台代码(可行):
static void Main()
{
RunAsync().Wait();
}
static async Task RunAsync()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:49358/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("api/branches/1035");
if (response.IsSuccessStatusCode)
{
branch branch = await response.Content.ReadAsAsync<branch>();
Console.WriteLine("{0}\t${1}", branch.Id, branch.Color);
}
}
}
当它到达await client.GetAsync("api/branches/1035")时,它会被冻结
private void button1_Click(object sender, EventArgs e)
{
RunAsync().Wait();
}
static async Task RunAsync()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:49358/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("api/branches/1035");
if (response.IsSuccessStatusCode)
{
Branch branch = await response.Content.ReadAsAsync<Branch>();
Console.WriteLine("{0}\t${1}", branch.Id, branch.Color);
}
}
}
【问题讨论】:
-
为什么您的 button1_Click 仍在尝试写入控制台?它不再是控制台应用程序。
-
@KenWhite 是的,我的错,忘了那行,我正在尝试从我的 api 中获取一些“分支”,然后客户应该返回他喜欢的那些
标签: c# httpclient asp.net-web-api async-await