2017-05-22 4 views
0

ich über asynchrone Methoden lernen, und ich verstehe nicht, warum asyn Aufgabe Methode RückkehrAsync Methode zurückgeben System.Threading.Tasks.Task

System.Threading.Tasks.Task'1 [System ...

Im Folgenden finden Sie den Code ein:

public async Task<List<T>> GetAll(){ 
    try{ 
     var conn = new SQLiteAsyncConnection(System.IO.Path.Combine(path,"database.db")); 
      var value = await conn.Table<T>().ToListAsync(); 
      return value; 
     } 
     catch (Exception e) 
     { 
      Log.Info(TAG, "Error when selecting the registry. " + e.Message); 
     } 

     return null; 
} 

In diesem Fall wird der Wert zurückgegeben wird, sondern als System.Threading.Tasks.Task'1 [System ... und nicht als Abfrage Rückkehr.

+2

Es ist nicht wirklich klar, was Sie meinen - ja, es gibt eine Aufgabe zurück ... so funktionieren asynchrone Methoden. Sie geben Ihnen etwas zurück, das sagt: "Ich habe die Arbeit für Sie begonnen - das Ergebnis wird in dieser Aufgabe sein, wenn es abgeschlossen ist." –

+0

Sorry, lass mich klarer sein. Ich glaube, wenn ich 'conn.Table () laufen lasse. ToListAsync() 'return muss wie (wählen Sie * aus Datentabelle), zum Beispiel 2, aber es gibt System.Threading.Tasks.Task'1 .. für wer ruft die' GetAll() 'Methode. –

+1

Nein, ich fürchte, das ist überhaupt nicht klarer ... es klingt immer noch so, als ob man überprüfen sollte, was es heißt, eine asynchrone API aufzurufen. (Wenn die Methode blockiert, bis sie die Ergebnisse direkt zurückgeben kann, kann sie per Definition nicht asynchron sein ...) –

Antwort

-1

Jede asynchrone Task gibt ein Task-Objekt zurück, mit dem der Status der asynchronen Anforderung abgerufen werden kann. Wenn Sie auf das Ergebnis der Abfrage zugreifen möchten, müssen Sie die Eigenschaft task.Result konsultieren, die die tatsächliche Ausgabe der asynchronen Methode enthält.

+3

Das ist eine sehr schlechte Idee, weil es * blockiert * wird, bis der asynchrone Vorgang abgeschlossen ist. Das OP wartet bereits auf ein Ergebnis auf die richtige Art und Weise - mit 'await' –

Verwandte Themen