【发布时间】:2017-10-18 20:01:12
【问题描述】:
我在 a-z 中找不到关于如何以安全的方式从构造函数调用异步方法的直接示例。以下是我想出的,但我不太了解这些概念,所以我不知道它是否真的正确。有人可以祝福这种格式吗?
创建 IAsyncInitialization 接口:
/// <summary>
/// The result of the asynchronous initialization of this instance.
/// see http://blog.stephencleary.com/2013/01/async-oop-2-constructors.html
/// </summary>
Task Initialization { get; }
在这个 ViewModel 上打接口然后...:
public GotoViewModel() // constructor
{
Initialization = InitializeAsync();
}
public Task Initialization { get; private set; }
private async Task InitializeAsync()
{
//call some async service and get data
}
来自使用此 ViewModel 的代码隐藏 xaml.cs:
public partial class GotoPage : ContentPage, IAsyncInitialization
{
IGotoViewModel VM;
public GotoPage()
{
InitializeComponent();
VM = App.Container.Resolve<IGotoViewModel>();
Initialization = InitializeAsync();
}
public Task Initialization { get; private set; }
private async Task InitializeAsync()
{
await VM.Initialization;
this.BindingContext = VM;
}
}
这段代码效果很好,但我知道这并不意味着什么。
【问题讨论】:
标签: asynchronous xamarin constructor xamarin.forms async-await