Mit Func-Delegat mit Async-Methode
Ich bin versucht, Func mit "Async" - Methode. Und ich bin immer ein Fehler.
Konvertieren kann, asynchrone lambda-Ausdruck, der Delegaten-Typ
'Func<HttpResponseMesage>'
. Eine asynchrone lambda-Ausdruck kann void zurück, Aufgabe oderTask<T>
von denen keines dem Cabrio zu'Func<HttpResponseMesage>'
.
unten ist mein Code:
public async Task<HttpResponseMessage> CallAsyncMethod()
{
Console.WriteLine("Calling Youtube");
HttpClient client = new HttpClient();
var response = await client.GetAsync("https://www.youtube.com/watch?v=_OBlgSz8sSM");
Console.WriteLine("Got Response from youtube");
return response;
}
static void Main(string[] args)
{
Program p = new Program();
Task<HttpResponseMessage> myTask = p.CallAsyncMethod();
Func<HttpResponseMessage> myFun =async () => await myTask;
Console.ReadLine();
}
InformationsquelleAutor der Frage maxspan | 2016-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie der Fehler sagt, async-Methoden zurück
Task
,Task<T>
odervoid
. So, diese zu bekommen zu arbeiten, können Sie:InformationsquelleAutor der Antwort spender
Code beheben wie:
InformationsquelleAutor der Antwort Linh Tuan
Den Weg, den ich normalerweise nehmen ist, haben die
Main
Methode aufrufenRun()
Methode gibt eine Aufgabe, und.Wait()
auf dieTask
abgeschlossen.Diese kann den rest der Konsole app zu laufen mit voller async/await-Unterstützung. Da gibt es keine UI-thread im Konsolen-app, Sie laufen nicht die Gefahr von Deadlocks bei der Nutzung von
.Wait()
.InformationsquelleAutor der Antwort Johnathon Sullinger