2017-07-17 3 views
2

Aufruf Methode:Ausgabe mit async und erwarten in C#

internal object ExecuteJob(RequestParam inputParam) 
{ 
    bool jobStatus = false; 
    var result = jobManager.ExecuteJob(inputParam); 
    // Code continues 

} 

Hervorrufen Methode:

public async Task<int> ExecuteJob(RequestParam param) 
{ 
    await Task.Run(() => 
    { 
     result = package.Execute(); 
     jobResult = (int)result; 
    }); 

    return jobResult; 
} 

Einmal habe abgeschlossen Paket, sollte es an die aufrufende Methode zurückzukehren, Wie können wir das erreichen? Weil innen erwarten können, konnte ich nicht verwenden, wie unten,

Bitte jemand helfen.

+3

dies vielleicht? 'zurück warten Task.Run (() => {... return jobResult;}' –

+0

Danke für den Kommentar. Es hat nicht funktioniert, versuchte dies früher. – mariapradeep

+5

Was ist das Problem? Was passiert, wenn Sie kompilieren und \ oder diesen Code ausführen? –

Antwort

3

Vielleicht so etwas:

internal async Task<object> ExecuteJobAsync(RequestParam inputParam) 
{ 
    bool jobStatus = false; 

    var result = await jobManager.ExecuteJob(inputParam); 
    // Code continues 
} 

public Task<int> ExecuteJob(RequestParam param) 
{ 
    return Task.Run<int>(() => 
    { 
     return (int)package.Execute(); 
    }); 
} 
+0

Der Rückgabetyp einer asynchronen Methode muss 'void' oder' Task' oder 'sein Aufgabe '. Es konnte nicht' Objekt' sein. –

+0

@ S.Akbari Danke für den Hinweis. Ich habe meine Antwort bearbeitet –

+0

Paketausführung sollte asynchron sein. Aber ich konnte nicht aus Ihrem Code sehen. Bitte lassen Sie mich kennt. – mariapradeep