任务一直等待激活 [英] Task keeps waiting for activation
本文介绍了任务一直等待激活的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图用使用Microsoft.Http的API。我跟着在这里给人的 http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client ,但我的任务没有完成,在保持状态WaitingForActivation
I trying to use an API using Microsoft.Http. I followed the samples giving here http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client, but my task does not complete, keeps in status WaitingForActivation
private void btnLogin_Click(object sender, EventArgs e) {
try {
var t = Api.LoginAsync( tbUsername.Text, tbPassword.Text);
t.Wait();
_Token = t.Result;
}
catch (Exception ex) {
ShowError(ex.Message);
}
}
API类
static class Api {
private const string URLBase = "http://localhost:28929/";
public static async Task<string> LoginAsync(string Username, string Password ) {
using (var client = new HttpClient()) {
client.BaseAddress = new Uri(URLBase);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP POST
var VM = new Usuario() { Username = Username, Password = Password};
HttpResponseMessage response = await client.PostAsJsonAsync("api/login", VM);
if (response.IsSuccessStatusCode) {
return await response.Content.ReadAsAsync<string>();
}
else {
throw new ApplicationException("No se pudo ingresar. Error: " + response.StatusCode.ToString());
}
}
}
}
推荐答案
您需要让你的事件处理程序异步
以及
You need to make your event handler async
as well:
private async void btnLogin_Click(object sender, EventArgs e) {
try {
_Token = await Api.LoginAsync( tbUsername.Text, tbPassword.Text);
}
catch (Exception ex) {
ShowError(ex.Message);
}
}
这篇关于任务一直等待激活的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文