Нет, вы не можете напрямую запускать его асинхронно.Вы также не должны знать, когда подсистема привязки будет вызывать ее.
Ничто не мешает вам запустить фоновый поток из этой функции, но, честно говоря, это не имеет большого смысла.Если ваш код CanExecute занимает слишком много времени на выполнение, вам действительно нужно переоценить то, что вы делаете, означает ли это повтор кода или повторный пользовательский интерфейс, чтобы удалить зависимость от CanExecute.используйте DelegateCommand из Prism , вы можете принудительно заставить все, что связано с командой, переоценить CanExecute при выборе.Это можно сделать, вызвав для команды функцию RaiseCanExecuteChanged () .Если затем у вас работает фоновый поток, который вызывает его при необходимости, он должен функционировать так, как вам нужно.