Solución:
¿Por qué necesita restablecer el flujo de memoria? Siempre puedes crear uno nuevo. O puedes usar:
memoryStream.SetLength(0);
Dado que un MemoryStream es esencialmente una matriz de bytes con un índice (y algunos otros miembros de apoyo), borrar la matriz de bytes y restablecer el índice se puede considerar restablecer y borrar el MemoryStream. Si el estado inicial de un MemoryStream es una matriz puesta a cero con una posición de cero, entonces un ejemplo de un reinicio de MemoryStream puede ser:
public static void Clear(this MemoryStream source)
{
byte[] buffer = source.GetBuffer();
Array.Clear(buffer, 0, buffer.Length);
source.Position = 0;
source.SetLength(0);
}
Es incorrecto decir que MemoryStream.SetLength solo restablece o borra MemoryStream ya que SetLength solo borra la matriz de búfer interno si la longitud excede la longitud del búfer actual.
Reinicializar un MemoryStream es un enfoque válido pero menos eficiente. Un beneficio de reinicializar MemoryStream sería garantizar que la transmisión nunca se cerró. Una vez que se cierra MemoryStream, ya no se puede cambiar. Si puede asegurarse de que la instancia de MemoryStream no esté cerrada, borrar el búfer puede ser el camino a seguir.