C# 在asyc方法中返回任务已完成

C# 在asyc方法中返回任务已完成,c#,multithreading,C#,Multithreading,我有一个方法必须是异步的,因为它正在调用异步方法: public async Task TransitionToPendingApproval(Guid id) { // Update status to pending approval var cimp = Repository.GetById(id); ChangeCimpStatus(cimp, Dom.CimpStatus.PendingApproval);

我有一个方法必须是异步的,因为它正在调用异步方法:

    public async Task TransitionToPendingApproval(Guid id)
    {
        // Update status to pending approval
        var cimp = Repository.GetById(id);
        ChangeCimpStatus(cimp, Dom.CimpStatus.PendingApproval);
        await EmailPendingApprovalAsync(cimp).ConfigureAwait(true);
        return System.Threading.Tasks.Task.CompletedTask;
    }
我只想返回任务已完成,但出现以下错误:

Since 'CimpProvider.TransitionToPendingApproval(Guid)' is an async method that returns 'Task', a return keyword must not be followed by an object expression. Did you intend to return 'Task<T>'?
由于“CimpProvider.TransitionPendingApproval(Guid)”是一个返回“Task”的异步方法,因此返回关键字后面不能跟有对象表达式。您是否打算返回“任务”?

我做错了什么以及如何修复它?

因为您返回的是
任务而不是
任务
,所以不需要返回任何内容。只需完全删除最后一个return语句


请参阅以获取解释。(“任务返回类型”部分)

因为您返回的是
任务而不是
任务
,所以不需要返回任何内容。只需完全删除最后一个return语句


请参阅以获取解释。(“任务返回类型”部分)

在您的案例中不返回任何内容(完全删除最后一行)。好的,您可以解释为什么吗?当您将方法标记为“async”时,它会自动包装在任务中,因此它已经(默认情况下)返回任务。如果它返回任务-您需要提供T(返回某物)。如果它只返回Task——这类似于return void方法。在您的情况下只返回nothing(完全删除最后一行)。好的,您能解释为什么吗?当您将方法标记为“async”时,它会自动包装在Task中,所以它已经(默认情况下)返回Task。如果它返回任务-您需要提供T(返回某物)。如果它返回的是just Task-这类似于return void方法。谢谢,你能澄清“任务而不是任务”吗?对不起,它没有包含通用部分,用空格更新了我的答案是,
wait
可以是方法中的最后一句话。谢谢,你能澄清“任务而不是任务”吗?对不起,它没有包含通用部分,使用空格键更新了我的答案Yep,
wait
可以是方法中的最后一条语句。