Как бы я go о создании Asynccommand - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть приложение, которое использует MVVM в C#, поэтому оно является приложением wpf, и у меня есть обычная команда Relay, но эта команда может выполнять только действия и, в основном, только обычные методы, что если я что-то активировать asyn c метод, когда я нажимаю на кнопку, то как мне go сделать команду Relay, которая может принимать как асинхронный c, так и синхронный код? это то, что я пробовал так далеко, я также просмотрел эту ссылку https://docs.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-patterns-for-asynchronous-mvvm-applications-data-binding и эту ссылку https://johnthiriet.com/mvvm-going-async-with-async-command/

using Microsoft.JScript;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;

namespace DataConverter.Command
{

    public class RelayCommandAsync : ICommand
    {
        private readonly Func executedMethod;
        private readonly Func canExecuteMethod;

        public event EventHandler CanExecuteChanged;
        public RelayCommandAsync(Func execute) : this(execute, null) { }

        public RelayCommandAsync(Func execute, Func canExecute)
        {
            this.executedMethod = execute ?? throw new ArgumentNullException("execute");
            this.canExecuteMethod = canExecute;
        }

        public bool CanExecute(object parameter) => this.canExecuteMethod == null || this.canExecuteMethod((T)parameter);
        public async void Execute(object parameter) => await this.executedMethod((T)parameter);
        public void OnCanExecuteChanged() => CanExecuteChanged?.Invoke(this, EventArgs.Empty);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...