2017-07-17 146 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