¿Cómo deshacerse de un IDisposable en Managed C ++
-
20-08-2019 - |
Pregunta
Estoy tratando de deshacerme de un objeto IDisposable (FileStream ^ fs) en C ++ administrado (.Net 2.0) y obtengo el error
'Dispose' : is not a member of 'System::IO::FileStream'
Dice que debería invocar el destructor en su lugar. Will llamando
fs->~FileStream();
¿llama al método dispose en el objeto FileStream? ¿Por qué no puedo llamar a Dispose?
Solución
El patrón correcto es simplemente eliminar el objeto:
delete fs;
Esto se traducirá en una llamada a Dispose ()
Consulte esta publicación para obtener algunos detalles de lo que es pasando debajo del capó. La ventaja de este idioma es que te permite escribir:
{
FileStream fs(...)
...
}
Y haga que el método Dispose se llame correctamente ... equivalente a un bloque using en C #. El objeto de secuencia de archivos todavía está asignado en el montón administrado.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow