c# - 异步等待返回任务

标签 c# asynchronous async-await

有人可以解释这对同步方法意味着什么吗?如果我尝试将方法更改为 async然后VS提示一下。

这个有效:

public Task MethodName()
{
     return Task.FromResult<object>(null);
}

这行不通:

public async Task MethodName()
{
     return Task.FromResult<object>(null);
}

所以基本上我想知道这到底是什么意思:Task.FromResult<object>(null);

最佳答案

async方法与普通方法不同。无论你从async返回什么方法包装在 Task 中.

如果你没有返回任何值(void),它将被包裹在Task中, 如果你返回 int它将被包裹在 Task<int> 中等等。

如果你的异步方法需要返回int您会将方法的返回类型标记为 Task<int>然后你会返回普通的int不是 Task<int> .编译器将转换 intTask<int>给你。

private async Task<int> MethodName()
{
    await SomethingAsync();
    return 42;//Note we return int not Task<int> and that compiles
}

同样,当你返回时Task<object>你的方法的返回类型应该是 Task<Task<object>>

public async Task<Task<object>> MethodName()
{
     return Task.FromResult<object>(null);//This will compile
}

由于您的方法返回 Task ,它不应返回任何值。否则它不会编译。

public async Task MethodName()
{
     return;//This should work but return is redundant and also method is useless.
}

请记住,没有 await 的异步方法声明不是async .

关于c# - 异步等待返回任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191512/

相关文章:

javascript - 尝试在 WordPress 网站上的脚本标记后添加异步

wcf - 异步WCF

javascript - Puppeteer 一次打开每个文件的 chrome 实例

flutter - flutter/dart : Any downsides to async/await vs. raw Future API 中的异步模式?

c# - WPF Textblock TargetNullValue 不工作?

c# - Xamarin Android 应用程序在 Release模式下崩溃(Parse.Android SDK)

c# - 将 Datagrid.SelectedItems 集合转换到 List<T>

c# - 如何在 C# 中发布一条推文

vb.net - 在 VB 中正确使用 Async/Await

c# - 取消自动完成字段的任务不会取消所有以前的任务