启动任务并等待多次

时间:2015-12-02 00:43:41

标签: c# async-await task

在移动应用程序中,我有一个可能很长的异步操作(多个异步网络调用分组在异步函数中)。

_myClassField = myClient.DoANumberOfNetworkCallsAsync();

我在应用程序启动时立即执行调用,然后我显示启动画面和欢迎屏幕,并且仅在第一次用户交互时显示(例如:按下按钮)我最终等待任务并让用户等待响应尚未准备好。

public async Task<object> GetMyLongAwaitedObjectAsync()
{
    return await _myClassField;
}

此方法可以多次调用,可能同时形成UI和非UI线程。

这可能是问题的根源还是有效的模式?

1 个答案:

答案 0 :(得分:5)

可以根据需要多次等待完成的任务,并且它总会产生相同的结果。

您也可以根据需要多次拨打Wait()Result,任务完成后也不会阻止。

我会改变你的代码,但是:

public Task<object> GetMyLongAwaitedObjectAsync()
{
    return _myClassField;
}

这样,编译器就不必生成状态机,每次调用属性时都不会实例化。