2015-02-08 68 views
-2

我有:執行aync方法,以便

public myclass 
{ 
public async Task method1(); 
public async Task method2(); 
public async Task method3(); 
} 

我實現這應該在MyClass的執行功能對象這些3個mthods一個接一個。我不知道哪種方式更好(性能/正確性): 1)

public async Task mymethod(myclass obj) 
{ 
await obj.method1(); 
await obj.method2(); 
await obj.method3(); 
} 
myclass myobj = new myclass(); 
await myobj.method(myobj); 

2)

public Task mymethod(myclass obj) 
{ 
obj.method1(); 
obj.method2(); 
obj.method3(); 
} 
myclass myobj = new myclass(); 
await myobj.method(myobj); 
+3

第一個可能更好,因爲它編譯。 – 2015-02-08 21:54:25

+0

@ Selman22可能會欺騙我。 – 2015-02-08 21:57:45

+0

@AntP:第二個示例缺少分號和返回語句。 – 2015-02-08 21:59:27

回答

2

只有第一個例子是正確的。

即使你固定的第二個例子,以便它返回一個Task對象,你仍然有每個人的方法將與其他兩個,這似乎正是你做什麼不同時運行問題想。即在第二個例子中,在調用下一個方法之前,您不必等待一個方法完成。

既然你必須添加的等待反正第二個例子某種,只是爲了得到它才能正常工作,你應該繼續使用您的第一個例子中看到正確的,地道的async/await技術。