Команду реле можно выполнить и Задача

я хочу запустить задачу, когда вызывается команда реле, однако я хочу отключить кнопку, пока эта задача выполняется

возьми этот пример

private ICommand update;
public ICommand Update
        {
            get
            {
                if (update == null)
                {
                    update = new RelayCommand(
                        param => Task.Factory.StartNew(()=> StartUpdate()),
                        param => true); //true means the button will always be enabled
                }
                return update;
            }
        }

Каков наилучший способ проверить, выполняется ли эта задача?

вот мое решение, но не уверен, что это лучший способ

class Vm : ObservableObject 
    {

        Task T;
        public Vm()
        {
            T = new Task(() => doStuff());
        }

        private ICommand myCommand;
        public ICommand MyCommand
        {
            get { return myCommand ?? (myCommand = new RelayCommand( p => { T = new Task(() => doStuff()); T.Start(); }, p => T.Status != TaskStatus.Running)); }
        }


        private void doStuff()
        {
            System.Threading.Thread.Sleep(5000);
        }

    }

Обновление: каждый ответ здесь работает нормально, но все же они не согласны друг с другом, и я только что достиг 100 репутации, я начинаю вознаграждение всякий раз, когда я достигаю 100, так что я ищу реализацию оптимальной асинхронной утечки памяти RelayCommand, который выполняется внутри задачи в .net 4.0

Ответы на вопрос(5)

Ваш ответ на вопрос