2015-02-08 33 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技术。

相关问题