是否有任何理由在两个MemoryStream之间使用CopyToAsync

时间:2017-08-02 09:32:30

标签: c#

您知道两个流都是内存流。两个流都由内存中的字节缓冲区支持,因此有没有使用CopyToAsync和CopyTo的点?一个简单的例子:

MemoryStream stream1 = new MemoryStream();
MemoryStream stream2 = new MemoryStream();
...//do something to add data to stream1
await stream1.CopyToAsync(stream2);

2 个答案:

答案 0 :(得分:2)

不,MemoryStream上的所有“异步”方法实际上都是同步的。 CopyToAsync和朋友仅存在于MemoryStream,因为它们存在于Stream

如果一个或另一个流具有真正的异步操作,则使用CopyToAsync是有意义的,但如果您知道两个流都是MemoryStream,那么您只需调用CopyTo并获取同样的行为。

答案 1 :(得分:1)

嗯,在询问之前应该查看implementation for MemoryStream

// If destination is a MemoryStream, CopyTo synchronously:
memStrDest.Write(_buffer, pos, n);

所以,没有意义。

这里会留下问题以防万一。