C#Task.Result为Null

时间:2019-01-22 21:44:52

标签: c# task

我有以下方法,该方法最终将返回一些Task<IList<DataModel>>,但现在仅返回null。我想将此列表的结果加载到ViewModel的ObservableCollection中,然后显示在ListView中。

但是现在,我只想返回null并检查是否正确处理了它,因此ListView结果应该什么也不显示。我用这段代码来简化:

public async Task<IList<DatatModel>> GetData(string id)
{
    return await Task.FromResult<IList<DataModel>>(null);
}

我调用上面的代码,并将遍历Task的结果并将其全部加载到ObservableCollection中,如下所示:

public void Initialize()
{
    foreach (var data in GetData(Id).Result)
    {
        MyObservableCollection.Add(data);
    }
}

但是,我的应用程序冻结了。我认为上述对GetData(id).Result的调用是有问题的,因为Result为null。

如果存在某些数据,如何循环访问这些数据并将其加载到我的ObservableCollection中?或者,如果没有返回数据,则不加载任何内容?

1 个答案:

答案 0 :(得分:0)

返回空的null而不是返回List<DataModel>。这样,您的Result属性将始终被填充。因此,您的GetData方法将变为:

public async Task<IList<DatatModel>> GetData(string id)
{
    return await Task.FromResult<IList<DataModel>>(new List<DataModel>());
}