异步方法签名错误。必须返回无效,任务或任务

问题描述:

我有一个异步方法。异步方法签名错误。必须返回无效,任务或任务<T>

private static async Task InsertConnectionStatusIntoAzureDatabaseAsync(Device device) 
{ 
    ... 
} 

我把它用

await InsertConnectionStatusIntoAzureDatabaseAsync(device).ConfigureAwait(false); 

Visual Studio将不会建立说的async method must return void, Task or Task<T>

它还红色波浪线行InsertConnectionStatusIntoAzureDatabaseAsync(device).ConfigureAwait(false);说:

任务不包含ConfigureAwait的定义()

在文件顶部的usings是

using System.Threading.Tasks; 
using System.Threading; 

.NET框架,它的目标是4.6.1

+6

你在你的项目中有一个相冲突的类,也称为“Task”? – DavidG

+0

哦,伙计!就是这样。有一堂课被埋在247,000行文件中,名为Task!如果您将此作为答案,我会将其标记为正确。 – Stuart

+0

247k行?!我希望这是自动生成的,或者你真的需要做一些重构! – DavidG

你几乎可以肯定在你的项目中另一个类称为Task这是相互冲突.Net Framework版本。您可以通过转到Task类型的定义来查看它,并查看它带您的位置。因此,要么重命名版本的东西不同的(可能是最佳选择),或使用完整的命名空间:

private static async System.Threading.Tasks.Task InsertConnectionStatusIntoAzureDatabaseAsync() 
{ 
    //snip 
} 

您可以如用命名空间别名和使用,在你的方法signatire像

using task = System.Threading.Tasks; 

    private static async task.Task InsertConnectionStatusIntoAzureDatabaseAsync(Device device) 
    { 
     ... 
    }