2017-04-20 36 views
3

我有一個異步方法。異步方法簽名錯誤。必須返回無效,任務或任務<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

回答

5

你幾乎可以肯定在你的項目中另一個類稱爲Task這是相互衝突.Net Framework版本。您可以通過轉到Task類型的定義來查看它,並查看它帶您的位置。因此,要麼重命名版本的東西不同的(可能是最佳選擇),或使用完整的命名空間:

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

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

using task = System.Threading.Tasks; 

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