public ModalCardDatabaseUpdateInterface( ICardDatabaseManager cardDatabaseManager, ICardDatabaseUpdateService cardDatabaseUpdateService, IModalDisplay modalDisplay, Dispatcher uiDispatcher) { _cardDatabaseManager = cardDatabaseManager.Require(nameof(cardDatabaseManager)); _cardDatabaseUpdateService = cardDatabaseUpdateService.Require(nameof(cardDatabaseUpdateService)); _modalDisplay = modalDisplay.Require(nameof(modalDisplay)); _uiDispatcher = uiDispatcher.Require(nameof(uiDispatcher)); }
public CardDatabaseUpdateModalViewModel( ICardDatabaseManager cardDatabaseManager, ICardDatabaseUpdateService cardDatabaseUpdateService, Dispatcher uiDispatcher) { _cardDatabaseManager = cardDatabaseManager.Require(nameof(cardDatabaseManager)); _cardDatabaseUpdateService = cardDatabaseUpdateService.Require(nameof(cardDatabaseUpdateService)); _uiDispatcher = uiDispatcher.Require(nameof(uiDispatcher)); _currentVersion = _cardDatabaseManager.GetCurrentVersion(); var cancellation = new CancellationTokenSource(); Task.Run( async() => { int numDots = 1; while (!cancellation.IsCancellationRequested) { LatestVersion = string.Join(" ", Enumerable.Range(1, numDots).Select(__ => ".")); await Task.Delay(1000); numDots = (numDots % 3) + 1; } }); Task <int?> getLatestVersion = _cardDatabaseUpdateService.GetLatestVersion(); getLatestVersion.ContinueWith(__result => cancellation.Cancel()); getLatestVersion.ContinueWith( __result => { _latestVersion = __result.Result; LatestVersion = _latestVersion?.ToString() ?? "unknown"; _uiDispatcher.Invoke(() => _canExecuteDownloadChanged?.Invoke()); }, TaskContinuationOptions.NotOnFaulted); getLatestVersion.ContinueWith( __result => { LatestVersion = "unknown"; ErrorMessage = "Could not determine latest version!"; }, TaskContinuationOptions.OnlyOnFaulted); }