C# MemoryStream ReadAsync中task的用途是什么?
为什么使用任务,即使代码没有任何C# MemoryStream ReadAsync中task的用途是什么?,c#,asynchronous,async-await,task-parallel-library,C#,Asynchronous,Async Await,Task Parallel Library,为什么使用任务,即使代码没有任何async或wait。我确信在这里使用async不会带来任何性能改进,因为它不是一个I/O操作,而是一个内存操作 看起来有人在使用缓存,但他们仍然调用同步读取方法 Read(buffer, offset, count) 那么,任务在这里有什么用呢?它自己声明: [HostProtection(ExternalThreading = true)] [ComVisible(false)] public override Task<int> ReadAsy
async
或wait
。我确信在这里使用async
不会带来任何性能改进,因为它不是一个I/O操作,而是一个内存操作
看起来有人在使用缓存,但他们仍然调用同步读取方法
Read(buffer, offset, count)
那么,任务在这里有什么用呢?它自己声明:
[HostProtection(ExternalThreading = true)]
[ComVisible(false)]
public override Task<int> ReadAsync
这是一种通过基于任务的方法实现异步方法的新方法。它将返回已完成的任务,该任务在等待
ed时将不切换上下文并同步执行
在另一种情况下,它将使用默认实现,只需调用-提供异步模型的旧方法,使用带有回调模型的BeginRead
/EndRead
方法对。它自己声明:
[HostProtection(ExternalThreading = true)]
[ComVisible(false)]
public override Task<int> ReadAsync
这是一种通过基于任务的方法实现异步方法的新方法。它将返回已完成的任务,该任务在等待
ed时将不切换上下文并同步执行
在另一种情况下,它将使用一个默认实现,该实现只需调用-提供异步模型的旧方法,使用带有回调模型的BeginRead
/EndRead
方法对
这里的任务有什么用
这场战争比那场战争早。当异步方法被添加到BCL中时,流是一个明显的选择(异步代码是I/O操作的理想选择)。因此,决定将ReadAsync
(和friends)添加到基本流
类型中
但是,向后兼容性(一如既往)必须是一个优先事项。因此,基本流
类必须包含一个实现;它不能是抽象的。基本流
类将(如果派生类型实现了),或者只是
MemoryStream
——因为它知道它只是在处理一个内存缓冲区
这里的任务有什么用
这场战争比那场战争早。当异步方法被添加到BCL中时,流是一个明显的选择(异步代码是I/O操作的理想选择)。因此,决定将ReadAsync
(和friends)添加到基本流
类型中
但是,向后兼容性(一如既往)必须是一个优先事项。因此,基本流
类必须包含一个实现;它不能是抽象的。基本流
类将(如果派生类型实现了),或者只是
MemoryStream
-因为它知道它只是处理一个内存缓冲区-。基类用这个签名来定义它。基类用这个签名来定义它。