C#/ MonoTouch:如何在创建/显示ViewController时调用异步方法

Edu*_*lho 9 c# xamarin.ios async-await xamarin

Xamarin 发布了async/的支持,await它真正简化了移动平台中响应式UI的开发.我想利用它并从现在开始使用async/await东西来提高代码的编程水平.

但是,由于我对C#比较新,并且在我无法在我的代码中找到'hooks'之前没有使用async/ await我可以调用async方法.我知道事件处理程序是典型的地方(IoC发生的地方),但想象一下以下场景:

我想在加载ViewController时启动后台任务(而不是按下按钮时).

async Task PerformMyTaskAsync ()
{
    // ...
    await ... // another async API
    // ...
}

public override void ViewDidLoad ()
{
    base.ViewDidLoad ();

    // .. initialize UI
    await PerformMyTaskAsync ();
}
Run Code Online (Sandbox Code Playgroud)

很显然,我不能等待为PerformMyTaskAsyncViewDidLoad因为ViewDidLoad既不是异步方法,也不是事件处理程序.

当视图控制器加载(或出现,无论如何)时,启动后台任务的"替代"方法是什么?

kwc*_*cto 18

最新的Xamarin稳定通道版本支持ViewController生命周期方法的Async/Await重载.尝试:

public async override void ViewDidLoad()
Run Code Online (Sandbox Code Playgroud)