CA2202, cómo resolver este caso

¿Alguien puede decirme cómo eliminar todas las advertencias CA2202 del siguiente código?

public static byte[] Encrypt(string data, byte[] key, byte[] iv)
{
    using(MemoryStream memoryStream = new MemoryStream())
    {
        using (DESCryptoServiceProvider cryptograph = new DESCryptoServiceProvider())
        {
            using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptograph.CreateEncryptor(key, iv), CryptoStreamMode.Write))
            {
                using(StreamWriter streamWriter = new StreamWriter(cryptoStream))
                {
                    streamWriter.Write(data);
                }
            }
        }
        return memoryStream.ToArray();
    }
}

Advertencia 7 CA2202: Microsoft.Usage: El objeto 'cryptoStream' se puede eliminar más de una vez en el método 'CryptoServices.Encrypt (cadena, byte [], byte [])'. Para evitar generar un System.ObjectDisposedException no debe llamar a Dispose más de una vez en un objeto .: Líneas: 34

Advertencia 8 CA2202: Microsoft.Usage: El objeto 'memoryStream' se puede eliminar más de una vez en el método 'CryptoServices.Encrypt (string, byte [], byte [])'. Para evitar generar un System.ObjectDisposedException no debe llamar a Dispose más de una vez en un objeto .: Líneas: 34, 37

Necesita el Análisis de código de Visual Studio para ver estas advertencias (estas no son advertencias del compilador de C #).

Respuestas a la pregunta(12)

Su respuesta a la pregunta