相关疑难解决方法(0)

如何在mvvmcross视图模型中使用async?

我在mvvmcross viewmodel中有一个长时间运行的进程,并希望将其设置为异步(http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx).

Xamarin的测试版渠道目前支持async关键字.

下面是我目前如何实现异步的示例.IsBusy标志可以绑定到UI元素并显示加载消息.

这是正确的方法吗?

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

c# async-await mvvmcross xamarin

26
推荐指数
2
解决办法
9534
查看次数

标签 统计

async-await ×1

c# ×1

mvvmcross ×1

xamarin ×1