Я пытаюсь превратить синхронный метод из какого-то старого кода в асинхронный метод, но у меня возникли проблемы с пониманием. Из всех видео и учебных пособий, которые я прочитал, они, кажется, создают два метода: один - настоящую функцию, другой - обертку, а затем обертку, вызываемую в пользовательском интерфейсе.
Вот мой код:
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");
}
По какой-то причине, когда я пытаюсь вызвать метод в потоке пользовательского интерфейса от нажатия кнопки, он просит меня сделать событие кнопки async
.
txtLog.AppendText("Before Await");
Task<bool> result = await login("","");
txtLog.AppendText("After Await");
txtLog.AppendText("Result: " + result.toString());
Нужен ли мне метод-обертка, который также установлен в async
который делает вызов для входа в систему?