我有:
public myclass
{
public async Task method1();
public async Task method2();
public async Task method3();
}
我实现了一个函数,它应该在myclass对象上一个接一个地执行这3个方法。我不确定哪种方式更好(性能/正确性): 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);
答案 0 :(得分:2)
只有第一个例子是正确的。
即使你修复了第二个例子以便它返回一个Task
对象,你仍然会遇到问题,即每个单独的方法将与其他两个方法同时运行,这似乎正是你的不要想要。即在第二个例子中,在调用下一个方法之前,不要等待一个方法完成。
由于您无需为第二个示例添加某种等待,只是为了使其正常工作,您应该继续使用正确的惯用async
/ await
技术在你的第一个例子中看到。