我正在尝试将一段旧代码中的同步方法转化为异步方法,但我并不太理解。从我看过的所有视频和教程中,它们似乎都创建了两个方法:一个是实际函数,另一个是包装器,然后在UI上调用包装器。
这是我的代码:
private async Task<bool> login(String username, String password)
{
var tcs = new TaskCompletionSource<RestSharp.IRestResponse>();
RestSharp.RestRequest request = new RestSharp.RestRequest("/accounts/login/", RestSharp.Method.GET);
RestSharp.IRestResponse response = client.Execute(request);
// Make the login request
request = new RestSharp.RestRequest("/accounts/login/", RestSharp.Method.POST);
request.AddParameter("username", username);
request.AddParameter("password", password);
response = client.Execute(request);
// Return loggin status
dom = response.Content;
return dom["html"].HasClass("logged-in");
}
由于某种原因,当我尝试从按钮点击调用UI线程上的方法时,它要求我使按钮事件变成async
。
txtLog.AppendText("Before Await");
Task<bool> result = await login("","");
txtLog.AppendText("After Await");
txtLog.AppendText("Result: " + result.toString());
我是否需要一个包装方法,也要设置为async
,然后调用登录呢?