异步操作时需要注意的要点
1.使用异步方法返回值应当避免使用void
在使用异步方法中最好不要使用void当做返回值,无返回值也应使用Task作为返回值,因为使用void作为返回值具有以下缺点
无法得知异步函数的状态机在什么时候执行完毕
)传递给所有使用到的API
由于在.NET中取消操作必须显示的传递CancellationToken,所以如果想取消所有调用的异步函数,那么应该将CancllationToken传递给此调用链中的所有函数
❌下面例子在调用ReadAsync时并没有传递CancellationToken,所以不能有效的取消
public async Task<string> DoAsyncThing(CancellationToken
在使用异步IO时,应该将options参数设置为FileOptions.Asynchronous,否则会产生额外的线程浪费,详细信息请参考CLR中28.12节
9.建议取消那些不会自动取消的操作(CancellationTokenRegistry
StreamWriter(s)或Stream(s)时在Dispose之前建议先调用FlushAsync
当使用Stream和StreamWriter进行异步写入时,底层数据也有可能被缓冲,当数据被缓冲时