У меня есть приложение, которое использует 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);
}
}