Etwas fällt meine laufenden Aufgaben über einen bestimmten Punkt im Code (siehe unten). Es hört einfach auf auszuführen. Es passiert nur auf iOS-Geräten. Auf iOS-Simulatoren und Android-Geräten läuft es perfekt. Hat jemand schon einmal so etwas gesehen? Ich glaube nicht, dass es Deadlocks oder Race Conditions sind, denn dann würde es auf anderen Geräten nicht erfolgreich abgeschlossen werden oder?iOS fallen Aufgaben in der Mitte der Ausführung
Hier ist ein Code;
private async Task ExecuteFreshAndPopulateUI(IFetchVehicleCommand command)
{
List<Models.Vehicle.Vehicle> vehicles = await command.ReturnAndExecute<Models.Vehicle.Vehicle>();
var z = 9;
ListPopulateObservableCollection(vehicles, view.Vehicles);
}
public virtual async Task<dynamic> ReturnAndExecute<T>() where T : new()
{
await FlushCache<T>();
await Execute();
await CheckIfCached<T>();
return (dynamic) cachedResult.cachedObject;
}
public override async Task Execute()
{
try
{
dynamic x = await fetchableService.Fetch(userId);
if (x != null)
{
await cacheProvider.Cache(x); // THIS is the last line to be called from this method, it never returns
SetCached(true);
}
}
catch (Exception ex)
{
AddValidationError(ex.Message);
}
}
public async Task Cache(dynamic obj)
{
await database.InsertAllAsync((IEnumerable)obj); // this runs
} // this is the last breakpoint to be hit
Bearbeiten: reduziert den Code, um das Problem klarer zu machen.
Haben Sie versucht, es in einen try-catch-Block zu verpacken? Bei asynchronen Tasks werden die Ausnahmen nicht ausgeblendet. Wenn also eine Ausnahme ausgegeben wird, schlägt nichts fehl. Das könnte es sein! –
Es ist in einem Versuch/Catch in der Execute-Methode verpackt, wird das nicht sie fangen? Wie auch immer, es wird erfolgreich zwischengespeichert (wenn ich versuche, die Seite erneut zu laden, kommt es aus dem Cache und das funktioniert) – Magnus
Ich bin mir nicht sicher, wo ich gerade stehe ... Und ich kann nicht sehen, wo 'Execute' heißt ! Befindet es sich in 'ExecuteIfValid'? –