按顺序执行异步方法

execute async method in order

我目前面临的问题是either everything async or nothing
我有一个 Task Append 反过来调用一些 io 操作异步以便能够更快地执行。

如果io操作还是运行,Append会等待它完成再调用。 这可能会导致多个 Append 实例堆叠起来。

Append 方法应该始终执行顺序。 假设我有以下代码:

Append("this ");
Append("is ");
Append("an ");
Append("Example");

如果“这个Example是一个”出来就是废话了。我如何防止这种情况发生? 我可以在我的 Append class 中执行此操作,还是必须在我的调用代码中等待 Append?

您应该等待每个 Append 电话。它将确保当前任务在调用下一个任务之前完成。

请注意,将您的方法命名为 Append 并不意味着它是异步的,因此应命名为 AppendAsync

public void Append(string str)
{
    // some non-asynchronous logic
}

public async Task AppendAsync(string str)
{
    // some asynchronous logic
}

...

await AppendAsync("this ");
await AppendAsync("is ");
await AppendAsync("an ");
await AppendAsync("Example");