如何在类构造函数内等待异步操作
本文关键字:等待 异步操作 构造函数 | 更新日期: 2023-09-27 18:06:06
我有一个类构造函数:
public AllSignalsViewModel()
{
LoadSignals();
fetchMoreDataCommand = new DelegateCommand(
obj =>
{
if (busy)
{
return;
}
Busy = true;
ThreadPool.QueueUserWorkItem(
delegate
{
Deployment.Current.Dispatcher.BeginInvoke(
delegate
{
AddMoreItems();
Busy = false;
});
});
});
}
LoadSignals()是一个异步函数,但我需要让它在运行以下代码之前结束。但我不能等待它,因为我不能将构造函数设置为async。我该怎么办?
下面是一个LoadSignals()函数:
private async void LoadSignals()
{
var xmlDocument = new XmlDataSource();
var sigCol = new SignalCollection(xmlDocument);
var region = GetRegionInSettingsStorage();
var allSignals = await sigCol.LoadSignals(isVotes(), false, region);
signalSchema = allSignals;
AddMoreItems();
}
该怎么办?
我建议实现InitializeAsync方法,该方法可以在后面的代码中调用(甚至可以在没有await的构造函数中调用)。
但是LoadSignals必须返回task否则你不能等待它