2017-05-28 4 views
0

Ich versuche, einige Offline-Synchronisierung von einer Xamarin.iOS App zu tun. Wenn ich PullAsync auf dem IMobileServiceSyncTable aufruft, wird der Aufruf nie zurückgegeben.Azure mobile Dienste Offline-Synchronisierung

Ich habe versucht, mit einem regulären IMobileServiceTable, das scheint gut zu funktionieren. Die Sync-Tabelle scheint hier das Ding zu sein, die nicht für mich arbeiten

Code, der nicht funktioniert:

var client = new MobileServiceClient(ApiUrl); 

var store = new MobileServiceSQLiteStore("syncstore.db"); 
store.DefineTable<Entity>(); 

await client.SyncContext.InitializeAsync(store); 
table = client.GetSyncTable<Entity>(); 
try 
{ 
    await table.PullAsync("all", table.CreateQuery()); 
} 
catch (Exception e) 
{ 
    Debug.WriteLine(e.StackTrace); 
} 

return await table.ToListAsync(); 

-Code, das funktioniert:

var client = new MobileServiceClient(configuration.BaseApiUrl); 
return await table.ToListAsync(); 

jemand darauf hinweisen, kann etwas das scheint falsch zu sein? Ich bekomme keine Ausnahme oder nichts, das mich in irgendeine Richtung weist - es wird niemals abgeschlossen.

UPDATE 1: Gesehen einige andere SO-Fragen, wo Menschen ein ähnliches Problem hatten, weil sie irgendwo in ihrem Call-Stack nicht erwartet, sondern stattdessen eine Task.Result oder Task.Wait(). Ich warte jedoch auf diesen Anruf in meiner gesamten Kette. Hier ist z.B. Ich habe einen Komponententest geschrieben, der genau das gleiche Verhalten wie oben beschrieben hat. Hängt und kehrt nie zurück.

[Fact] 
public async Task GetAllAsync_ReturnsData() 
{ 
    var result = await sut.GetAllAsync(); 
    Assert.NotNull(result); 
} 

UPDATE 2: Ich habe auf den Antrag der Unit-Test senden worden Sniffing. Es scheint, dass es hängt, weil es die HTTP-Anfrage über mehrere hundert Male wiederholt und diese Operation nie beendet.

Antwort

Verwandte Themen