Команду реле можно выполнить и Задача
я хочу запустить задачу, когда вызывается команда реле, однако я хочу отключить кнопку, пока эта задача выполняется
возьми этот пример
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