Ich bin nicht vertraut mit Threading in .NET.So rufen Sie eine asynchrone Methode auf?
Ich habe eine ansync Methode MyTest:
public async Task MyTest() {
using (HttpClient httpClient = new HttpClient()) {
httpClient.BaseAddress = new Uri(_uri);
var response = await httpClient.GetAsync("API/GetData");
if(response!=null && response.IsSuccessStatusCode) {
var json = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
}
}
}
Das Problem, das ich in laufen lasse, um die Methode aufrufen, die Ergebnisse (Dictionary) zu erhalten.
Wenn ich Schritt obwohl mein Code, den ich die IsCompleted sehe, bevor die Ergebnisse kommen aus meiner Ruhe Rückruf erfolgt.
Wie Threading ich richtig in diesem Fall benutzen?
Meine Methode zum Aufrufen der asynchronen Methode.
public void GetTestData()
{
try
{
ARestService rest = new ARestService();
Task tsk = new Task(rest.MyTest);
if (tsk.IsCompleted)
{
var tst = "Done?";
}
}
catch(Exception ex)
{
string a = ex.Message;
}
}
Bitte, fühlen Sie sich frei, einige Tutorials auf async/erwarten zu lesen, anstatt sich durch die Dunkelheit zu fummeln. –
Mögliches Duplikat von [Wie asynchroner Methode von synchroner Methode in C# nennen?] (Http://stackoverflow.com/questions/9343594/how-to-call-asynchronous-method-from-synchronous-method-in-c) – meJustAndrew
Ruf es einfach an und warte auf das Ergebnis. Oder warte direkt darauf. Die Methode ist asynchron, weil **. ReadAsStringAsync ** bereits asynchron ist und im Hintergrund ausgeführt wird. Die Methode gibt eine bereits laufende Aufgabe zurück, die Sie nur erwarten müssen –