【问题标题】:execute aync methods in order按顺序执行异步方法
【发布时间】:2015-02-09 18:07:07
【问题描述】:

我有:

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);

【问题讨论】:

  • 第一个可能更好,因为它可以编译。
  • @Selman22 可能骗了我。
  • @AntP:第二个示例缺少分号和返回语句。
  • @PeterDuniho 是的,第一个状态也好不到哪里去。
  • @PeterDuniho:或者async修饰符...

标签: c# asynchronous async-await


【解决方案1】:

只有第一个例子是正确的。

即使您修复了第二个示例以使其返回一个 Task 对象,您仍然会遇到每个单独的方法将与其他两个方法同时运行的问题,这似乎正是您所使用的 '不 想要。 IE。在第二个示例中,您无需等待一个方法完成后再调用下一个方法。

由于无论如何您都必须在第二个示例中添加某种等待,只是为了让它正常工作,您应该继续使用第一个示例中看到的正确、惯用的 async/await 技术例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-24
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多