文件在哪里?ReadAll * * * Async / WriteAll * * * * * * Async / App

本文关键字:Async App WriteAll 文件 ReadAll 在哪里 | 更新日期: 2023-09-27 18:15:04

File类中有一堆比较方便的方法,如ReadAll***/WriteAll***/AppendAll***

当我需要它们的异步对应项时,我面临着许多情况,但它们根本不存在。

为什么?有什么陷阱吗?
我知道,这些方法可以很容易地实现,但是有什么理由不在框架中实现它们呢?

文件在哪里?ReadAll * * * Async / WriteAll * * * * * * Async / App

"……我需要它们的异步对应项,但它们根本不存在。为什么?"

所有与async-await一起添加到。net框架中的XXXAsync方法(不包括为async而开发的新库)都只是围绕BeginXXX/EndXXX的包装。

他们没有添加任何新的异步操作,他们只是将旧的操作转换为新的基于任务的操作。例如UdpClient.SendAsync:

public Task<int> SendAsync(byte[] datagram, int bytes)
{
    return Task<int>.Factory.FromAsync(BeginSend, EndSend, datagram, bytes, null);
}

既然没有File.BeginReadAllFile.EndReadAll,那么没有File.ReadAllAsync也是可以理解的。

有陷阱吗?

实现这些方法的唯一缺陷是以真正的异步方式实现,而不是假装异步。