2016-10-30 1 views
1

Ich bin ein Anfänger in Azure/SQL-Themen. Ich versuche, die Objekte aus einer SQL Azure-Datenbank zu entfernen, die zu meinen Klassenobjekten gehören. Angenommen, es gibt Objekte, die meinem Typ UserPosition in der SQL Server-Datenbank entsprechen.Azure: SQL-Daten synchron abrufen

Wie kann ich sie auf einfache und synchrone Weise erhalten? Im Moment ist die Leistung nicht wichtig. Ich möchte nur die Daten für Lernzwecke bekommen.

Dies ist mein Code:

IMobileServiceTable<UserPosition> PositionTable; 
    MobileServiceClient client; 
    client = new MobileServiceClient(Constants.ApplicationURL); 
    PositionTable = client.GetTable<UserPosition>(); 
    Task<List<UserPosition>> items; 
    items = PositionTable.ToListAsync(); 
    items.Start(); 

ich eine Ausnahme jetzt bekommen:

Starten nicht für ein Versprechen-style-Task aufgerufen werden kann.

(ich es aus dem Deutschen übersetzt) ​​

Wie dies richtig zu machen?

Antwort

0

Das Schlüsselwort async eignet sich hervorragend zum Umwandeln von komplexem Thread-Ausführungscode in Code, der wie Programme aussieht und synchron ist. Sie können dies tun, indem Sie das Schlüsselwort await verwenden, das, soweit es Ihre Methode betrifft, so ausgeführt wird, als ob es synchron wäre, aber mit dem Vorteil, dass der Ausführungsthread an den Pool zurückgegeben und vom Host-Prozess wiederverwendet wird Abhängigkeit auszuführen. Wenn Sie im Detail nicht interessiert sind die Steuerung/Überwachung der Aufgabe selbst (und ich glaube nicht, dass Sie in diesem Beispiel), dann ersetzen

Task<List<UserPosition>> items; 
items = PositionTable.ToListAsync(); 
items.Start(); 

mit

List<UserPosition> data = await PositionTable.ToListAsync(); 

Und sicher sein um Ihre Methode als async zu markieren. Dies wird Ihnen den Vorteil der asynchronen Ausführung ohne die Mühe der asynchronen Programmierung geben!

0

Die Task<List<UserPosition>> items läuft bereits, weil async methods immer wieder eine laufende Task<T> zurückgeben. Entfernen Sie items.Start(); und Ihr Code wird funktionieren.

+0

Ok. Jetzt bekomme ich keine Ausnahme. Aber ich bekomme auch keine Daten. Die Aufgabe sagt mir jetzt "WaitingForActivation". Wenn ich am Ende eine "List allItems = items.Result" mache, hängt die App dort. – Christoph

+0

Aufruf Warten oder Überprüfen der Ergebniseigenschaft einer Aufgabe kann (und wird) Deadlocks verursachen. – Tinwor

+0

Danke. Also, wie bekomme ich meine Daten heraus - oder auch sehen, ob es Daten in meinem Artikel Aufgabe gibt? – Christoph