2013-10-30 58 views
0

我想跟踪异步函数何时完成,所以我试着在代码 给出它不能正常工作,有没有人使用异步函数的IsCompleted属性。问题异步函数的IsCompleted属性

我的代码:

public async Task SetAsyncTask() 
{ 
//do a long process 
} 

//Calling method 
if (SetAsyncTask().IsCompleted) 
{ 
//display a finish message 
} 

请帮助什么是使用它的最佳方式。

回答

2

使用await关键字或使用while而不是if

await SetAsyncTask(); 
DisplayFinishMessage(); 

var x = SetAsyncTask(); 
while (!x.IsCompleted) {} 
DisplayFinishMessage(); 

的第一个选项可能是更好的。

+0

等待我如何知道这个异步函数何时完成? – Priti

+0

该函数执行后,将执行await关键字后面的代码。 –

+2

第一个选项更好一些,因为在长时间运行过程中它不会消耗线程。 – Jeff

6

IsCompleted没有阻塞,你想要await SetAsyncTask();

+0

当这个异步函数完成时,我想显示消息。 – Priti

+0

如果在await之后执行MessageBox.Show,则执行将返回到那里并在异步方法返回后显示消息框。等待就像一个书签,说当这个方法完成后,回到这里。 – Jeff