У меня есть длительный процесс в mvvmcross viewmodel и вы хотите сделать его асинхронным (http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx).
В настоящее время поддерживается ключевое слово async в бета-канале для Xamarin.
Ниже приведен пример того, как я в настоящее время реализую async. Флаг IsBusy может быть привязан к элементу пользовательского интерфейса и отображать загружаемое сообщение.
Правильно ли это?
public class MyModel: MvxViewModel
{
private readonly IMyService _myService;
private bool _isBusy;
public bool IsBusy
{
get { return _isBusy; }
set { _isBusy = value; RaisePropertyChanged(() => IsBusy); ; }
}
public ICommand MyCommand
{
get
{
return new MvxCommand(DoMyCommand);
}
}
public MyModel(IMyService myService)
{
_myService = myService;
}
public async void DoMyCommand()
{
IsBusy = true;
await Task.Factory.StartNew(() =>
{
_myService.LongRunningProcess();
});
IsBusy = false;
}
}