按顺序执行异步方法
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");
我目前面临的问题是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");