c# - 为什么 "async Task"方法的返回值不是任务

标签 c#

为什么会这样?返回类型不是任务。

public async Task<WorkItem> CreateWorkItem(WorkItem workItem)
{
    WorkItem item = new WorkItem();
    workItem.Description = "something";
    item = await Task.FromResult(item);
    return item;
}

为什么这不起作用?返回类型是任务。

public async Task<WorkItem> CreateWorkItem(WorkItem workItem)
{
    WorkItem item = new WorkItem();
    workItem.Description = "something";
    Task<WorkItem> result = await Task.FromResult(item);
    return result;
}

最佳答案

行 item = await Task.FromResult(item) 不正确,它实际上应该是:

return Task.FromResult(item);

由于该方法被标记为异步,您返回任务,然后调用 CreateWorkItem() 的任何人都会使用 await 执行此操作,因此调用者应如下所示:

WorkItem item = await CreateWorkItem(myWorkItem);

或者:

Task<WorkItem> itemTask = CreateWorkItem(myWorkItem);
item = await itemTask;

关于c# - 为什么 "async Task"方法的返回值不是任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33165376/

相关文章:

c# - iTextSharp 将预先存在的 PDF 作为图层添加到另一个 PDF

c# - MVC 5 @Html.AntiForgeryToken() 生成具有空值的 html 标签

c# - ASP.NET C# MySql 选择和更新表单

c# - 在winforms中获取最大化版本的窗口大小

c# - DataTable.Rows 方法不返回 IEnumerable<DataRow>

c# - 使用 C#/ASP.net MVC 建模 NoSQL 论坛应用程序

c# - Xamarin.Android 在后台线程上使用异步方法会导致屏幕闪烁

c# - 将嵌套字段绑定(bind)到 devexpress Grid 列

字节 [] 的 C# 问题

c# - 如何将 WriteAsync 与 XPSDocument 一起使用?