2017-07-17 145 views
2

調用方法:問題與異步和等待在C#

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

} 

調用方法:

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

    return jobResult; 
} 

一旦包得到完成,應該返回到調用方法,我們如何才能做到這一點?因爲在裏面等待,我不能像以下使用回報,

await Task.Run(() => 
{ 
    result = package.Execute(); 
    jobResult = (int)result; 
    if(result == ssisruntime.DTSExecResult.Success) 
     return jobResult; 
}); 

請別人幫忙。

+3

也許這? '返回等待Task.Run(()=> {... return jobResult;}' –

+0

感謝您的評論,它沒有工作,早些時候嘗試過 – mariapradeep

+5

什麼是問題?或運行此代碼? –

回答

3

也許是這樣的:

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

異步方法的返回類型必須是'void'或'Task'或'任務'。它不可能是'object'。 –

+0

@ S.Akbari感謝提示。我編輯了我的答案 –

+0

程序包執行應該是異步的,但是我無法看到你的代碼。知道。 – mariapradeep