Artemis.DeviceProviders.KeyboardProvider.EnableAsync C# (CSharp) Метод

EnableAsync() публичный Метод

Runs CanEnable asynchronously
public EnableAsync ( ProgressDialogController dialog ) : Task
dialog MahApps.Metro.Controls.Dialogs.ProgressDialogController
Результат Task
        public Task EnableAsync(ProgressDialogController dialog)
        {
            return Task.Run(() => Enable());
        }

Usage Example

Пример #1
0
        /// <summary>
        ///     Enables the given keyboard
        /// </summary>
        /// <param name="keyboardProvider"></param>
        public async void EnableKeyboard(KeyboardProvider keyboardProvider)
        {
            if (keyboardProvider == null)
                throw new ArgumentNullException(nameof(keyboardProvider));

            if (ChangingKeyboard || (ActiveKeyboard?.Name == keyboardProvider.Name))
                return;

            _logger.Debug("Trying to enable keyboard: {0}", keyboardProvider.Name);
            ChangingKeyboard = true;

            // Store the old keyboard so it can be used in the event we're raising later
            var oldKeyboard = ActiveKeyboard;

            // Release the current keyboard
            ReleaseActiveKeyboard();

            // Create a dialog to let the user know Artemis hasn't frozen
            ProgressDialogController dialog = null;
            if (DialogService.GetActiveWindow() != null)
            {
                dialog = await DialogService.ShowProgressDialog("Enabling keyboard",
                    $"Checking if keyboard '{keyboardProvider.Name}' can be enabled...", true);

                // May seem a bit cheesy, but it's tidier to have the animation finish
                await Task.Delay(500);
            }
            dialog?.SetIndeterminate();

            var canEnable = await keyboardProvider.CanEnableAsync(dialog);
            if (!canEnable)
            {
                if (dialog != null)
                    await dialog.CloseAsync();

                DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText);
                ActiveKeyboard = null;
                _generalSettings.LastKeyboard = null;
                _generalSettings.Save();
                _logger.Warn("Failed enabling keyboard: {0}", keyboardProvider.Name);
                ChangingKeyboard = false;
                return;
            }

            dialog?.SetMessage($"Enabling keyboard: {keyboardProvider.Name}...");

            // Setup the new keyboard
            ActiveKeyboard = keyboardProvider;
            await ActiveKeyboard.EnableAsync(dialog);
            EnableUsableDevices();

            _generalSettings.LastKeyboard = ActiveKeyboard.Name;
            _generalSettings.Save();

            RaiseKeyboardChangedEvent(new KeyboardChangedEventArgs(oldKeyboard, ActiveKeyboard));
            _logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name);

            if (dialog != null)
                await dialog.CloseAsync();

            ChangingKeyboard = false;
        }