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

问题描述 投票:9回答:3

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

但是,由于我是C#的新手,并且在无法找到可以调用async方法的代码之前,没有使用await / async。我知道事件处理程序是典型的地方(发生IoC的地方),但是可以想象以下情形:

我想启动后台任务当加载ViewController时(与当按下按钮时]相反)。

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

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

    // .. initialize UI
    await PerformMyTaskAsync ();
}

显然,我等不及PerformMyTaskAsync中的ViewDidLoad,因为ViewDidLoad既不是异步方法也不是事件处理程序。

当视图控制器加载(或出现,等等)时启动后台任务的“替代”方法是什么?

Xamarin发布了对async / await的支持,这确实简化了移动平台中响应式UI的开发。我想利用它,并通过...

c# xamarin.ios xamarin async-await
3个回答
18
投票

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


0
投票

不确定这是否是“最佳”方法,但是您是否尝试过在ViewDidLoad()中触发事件,然后在该事件的处理程序中启动异步代码?


0
投票

因此,从事件中在UI线程上运行了一些异步操作,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.