相关疑难解决方法(0)

List.add()异步任务等待正确的语法

您好我试图异步添加项目到列表但我不知道它是如何完成的,如果我使用的语法不正确,这就是我现在所拥有的:

我的看法:

await viewModel.getMessages();
list.ItemsSource = viewModel.Messages;
Run Code Online (Sandbox Code Playgroud)

我的视图模型:

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 = …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous async-await xamarin.forms

4
推荐指数
1
解决办法
8588
查看次数

在 Core 2.2 中返回异步结果时无法使用 Ok(...) 作为状态代码

我搭建了一个像这样的 WebAPI 模板。

[HttpGet]
public async Task<ActionResult<IEnumerable<ThingVm>>> GetThings()
{
  Task<List<ThingVm>> output = Context.Things
    .Select(e => new ThingVm(e))
    .ToListAsync();
  return await output;
}
Run Code Online (Sandbox Code Playgroud)

我注意到返回的结果不会传达任何状态代码(因为我没有提供 200 或 404 等)。所以我添加了标准的、通常的Ok(...)调用。

[HttpGet]
public async Task<ActionResult<IEnumerable<ThingVm>>> GetThings()
{
  ...
  return await Ok(output);
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是,计算机并没有意识到该操作并像这样解释了错误。

CS1061“OkObjectResult”不包含“GetAwaiter”的定义,并且找不到接受“OkObjectResult”类型的第一个参数的可访问扩展方法“GetAwaiter”(您是否缺少 using 指令或程序集引用?)

我明白为什么会这样。我不知道如何在保留响应中发出的状态代码的同时解决它。

我在谷歌上搜索了它,但发现了一些非常陈旧的东西完全不相关的东西相当不相关的东西。就是这样 - 根本没有太多其他热门歌曲,这也令人惊讶。

如何发出状态代码并应用异步方法?它们不是相互排斥的,是吗?

c# asynchronous asp.net-web-api asp.net-core asp.net-core-2.2

-1
推荐指数
1
解决办法
1229
查看次数