File
中有一堆相当方便的方法类,如 ReadAll***
/WriteAll***
/AppendAll***
。
我遇到过很多情况,当我需要它们的异步对应物时,但它们根本不存在。
为什么?有什么陷阱吗?
我知道,这些方法可以很容易地实现,但是有什么理由不在开箱即用的框架中实现它们吗?
最佳答案
"... I need their asynchronous counterparts, but they just don't exist. Why?"
与 async-await 一起添加到 .Net 框架的所有 XXXAsync
方法(不包括以异步方式开发的新库)只是 BeginXXX
的包装器>/EndXXX
.
他们没有添加任何新的异步操作,只是将旧的异步操作转换为新的基于任务的操作。例如这是 UdpClient.SendAsync
:
public Task<int> SendAsync(byte[] datagram, int bytes)
{
return Task<int>.Factory.FromAsync(BeginSend, EndSend, datagram, bytes, null);
}
由于没有 File.BeginReadAll
和 File.EndReadAll
,所以没有 File.ReadAllAsync
是可以理解的。
Are there any pitfalls?
实现这些方法的唯一缺陷是以真正的异步方式执行,而不是伪装异步。
关于c# - FIle.ReadAll***Async/WriteAll***Async/AppendAll***Async 方法在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32837405/