private void BeginEnumerate()
{
State = DriverState.Enumerating;
Task.Factory.StartNew( () =>
{
Model.Enumerate( () =>
{
logger.Info("Images available: {0}", Model.MediaList.Count);
PlatformService.InvokeOnUiThread( delegate { Viewer.UpdateUiState(); } );
Play();
});
})
.ContinueWith( t =>
{
if (!t.IsFaulted && !t.IsCanceled)
{
if (State == DriverState.Playing || State == DriverState.Paused)
{
logger.Info("Images fully loaded: {0}", Model.MediaList.Count);
PlatformService.InvokeOnUiThread( delegate
{
Viewer.UpdateUiState();
} );
Play();
}
else
{
logger.Info("Not playing, ignoring completed enumeration");
}
}
else
{
logger.Error("Failed or canceled: {0}", t.Exception);
PlatformService.InvokeOnUiThread( delegate { Viewer.Error(t.Exception.Message); });
}
return t;
});
}
}