File
课程中有许多相当方便的方法,例如ReadAll***
/ WriteAll***
/ AppendAll***
。
当我需要他们的异步对手时,我遇到了很多案例,但他们不存在。
为什么呢?有没有陷阱?
我知道,这些方法可以轻松实现,但有没有理由不在开箱即用的框架中实现它们?
答案 0 :(得分:4)
" ...我需要他们的异步对应物,但它们不存在。为什么"
与.ync框架一起添加到.Net框架中的所有XXXAsync
方法(不包括用async开发的新库)都只是BeginXXX
/ {{1}的包装器}。
他们没有添加任何新的异步操作,他们只是将旧的异步操作转换为新的基于任务的操作。例如,这是UdpClient.SendAsync
:
EndXXX
由于没有public Task<int> SendAsync(byte[] datagram, int bytes)
{
return Task<int>.Factory.FromAsync(BeginSend, EndSend, datagram, bytes, null);
}
和File.BeginReadAll
,因此没有File.EndReadAll
可以理解。
有任何陷阱吗?
实现这些方法的唯一缺陷是以真正的异步方式进行,而不是伪造异步。