Wiederum ein sync-Methode in einer asynchronen one

Ich versuche, die wiederum eine synchrone Methode, die von einigen alten code in eine asynchrone Methode, aber ich habe einige Schwierigkeiten zu verstehen. Von all den videos und tutorials, die ich gelesen habe scheinen Sie zu sein, die Schaffung von zwei Methoden: eine, die eigentliche Funktion, das andere eine wrapper und dann ist der wrapper aufgerufen auf der Benutzeroberfläche.

Hier ist mein code:

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"); 
}

Aus irgendeinem Grund, wenn ich versuche, rufen Sie die Methode auf dem UI-thread aus klicken auf eine Schaltfläche, es fragt mich, um das button-Ereignis async.

txtLog.AppendText("Before Await");

Task<bool> result = await login("","");

txtLog.AppendText("After Await");
txtLog.AppendText("Result: " + result.toString());

Brauche ich eine wrapper-Methode, die auch async was macht der Aufruf zum login?

Schreibe einen Kommentar