【发布时间】:2020-07-12 10:10:55
【问题描述】:
我正在尝试用 async/await 概念重写一些旧代码。
考虑下一个简化代码:
public async Task<bool> Foo()
{
using (var stream = new Stream()); // Any stream allowing async operations
....
stream.Write(0xff);
var bytes = new byte[];
// fill bytes
await stream.WriteAsync(bytes, 0, bytes.Length);
....
stream.Write(0xff);
// refill bytes
await stream.WriteAsync(bytes, 0, bytes.Length);
....
await stream.FlushAsync();
}
所以我的问题是:在同一过程中混合Write 和WriteAsync 调用是否安全?这里有什么陷阱?提前致谢。
【问题讨论】:
-
我认为它是安全的,因为您使用 await 并且如果 writeAsync 完成,则它主要进入下一行。
-
是的,如果在调用
Write之前完成WriteAsync是安全的。
标签: c# async-await stream