如何在类构造函数中等待异步操作?

时间:2014-05-30 08:42:10

标签: c# asynchronous

我有一个类costructor:

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();

    }

怎么办?

1 个答案:

答案 0 :(得分:0)

我建议实现一个InitializeAsync方法,该方法在后面的代码中调用(甚至在没有await的构造函数中)。

但是LoadSignals必须返回任务,否则你无法等待它......