2016-06-08 4 views
0

Ich habe eine Methode, die async sein muss, weil es eine Asynchron-Methode ruft:eine Aufgabe Rückkehr ist komplett in asyc Methode

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; 
    } 

kehre ich möchte nur, dass die Aufgabe beendet hat, aber ich bin immer diese Fehler:

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>'? 

Was mache ich falsch und wie behebe ich es?

+1

einfach nichts in Ihrem Fall zurückkehren (entfernen letzte Zeile vollständig). – Evk

+0

OK, können Sie erklären warum? –

+4

Wenn Sie die Methode mit "async" markieren, wird sie automatisch in Task eingebunden, sodass sie (standardmäßig) bereits Task zurückgibt. Wenn es Task zurückgibt - müssen Sie das T (etwas zurückgeben) bereitstellen. Wenn es nur Aufgabe zurückgibt - das ist analog zu Rückgabe void-Methode. – Evk

Antwort

2

Da Sie eine Task anstelle von Task< T> zurückgeben, müssen Sie nichts zurückgeben. Entfernen Sie einfach die letzte Rückgabeanweisung vollständig.

Siehe https://msdn.microsoft.com/en-us/library/mt674893.aspx zur Erläuterung. (Abschnitt 'Task-Rückgabetyp')

+0

Danke, kannst du "Aufgabe statt Aufgabe" klären. –

+0

Entschuldigung, es nicht den generischen Teil enthalten, aktualisiert meine Antwort mit einem Leerzeichen –

+1

Yep, 'erwarten 'kann die letzte Aussage in der Methode sein. –

Verwandte Themen