【发布时间】:2014-09-07 15:52:54
【问题描述】:
您好,我正在尝试将项目异步添加到列表中,但我不确定它是如何完成的,如果我使用了不正确的语法,这就是我目前所拥有的:
我的观点:
await viewModel.getMessages();
list.ItemsSource = viewModel.Messages;
我的视图模型:
public List<Message> Messages { get; set; }
public async Task getMessages()
{
await GetRemoteMessages();
}
private async Task GetRemoteMessages()
{
var remoteClient = new ChiesiClient();
var messages = await remoteClient.getMessages().ConfigureAwait(false);
//App.Database.
await SaveAll(messages).ConfigureAwait(false);
}
public async Task SaveAll(IEnumerable<Message> _messages)
{
foreach (var item in _messages)
{
await SaveMessage(item);
}
}
public async Task SaveMessage(Message item)
{
await Messages.Add(new Message // Cannot await void
{
Title = item.Title,
Description = item.Description,
Date = item.Date,
Url = item.Url
});
}
我不确定我的整个概念是否正确,但我如何才能等待将项目添加到我的列表中?这样做的正确方法是什么?
【问题讨论】:
-
这没有意义。为什么要等待将新项目添加到列表中?
-
将项目添加到列表不是一项可以从异步执行中看到任何好处的任务。
-
@Selman22 我需要等待 Web 服务完成才能呈现我的列表视图,但如果我没有这些项目,那么就没有什么可呈现的,你明白我的意思吗?
-
当您
awaitremoteClient.getMessages()时,您将暂停执行GetRemoteMessages方法,直到getMessages()完成。在那之后你不需要await任何东西。
标签: c# .net asynchronous async-await xamarin.forms