2014-12-01 58 views
-1

我实现一个接口C#任务不是一个任务

Task Something() 

,但没有在执行代码时调用异步

Task Something(){ 
    var x=1; 
    return null; 
} 

这在错误路线的结果:

await Something() 

如何发回空白任务以使界面快乐?

回答

6

您可以使用Task.FromResult返回已完成的任务。

Task Something() 
{ 
    var x=1; 
    // Do *something* here ;) 
    return Task.FromResult(true); 
} 

请注意,这将同步运行,而不是一个异步操作,所以最好也适当地记录。

0

如果期望异步,为什么不使它成为异步?

Task Something() 
{ 
    return Task.Run(() => { /* your code here */ }); 
} 
0

为了等待任何方法,它需要有一个异步签名所以为了等待的东西()应当作出这样的:

async Task Something() 
{ 
    //do stuff 
} 

请记住,当你想返回一个值,你应该返回一个任务,如果你想返回void,你应该只返回一个任务

+0

它不需要被标记为异步等待它 - 异步是一个实现细节。它只需要返回可以等待的任务,如任务。 – 2014-12-01 20:23:37