Ressourcen freigeben



  • Hallo zusammen,

    ich lege mir in einer Funktion mehrere Objekte an, die ich in einer Schleife benötige. In dieser Schleife befülle ich die Objekte mit Werte. Nach einem Schleifendurchlauf möchte ich diese Objekte wieder zurücksetzen. Hier ist mein Problem..

    array<unsigned char>^ FrameBuffer = gcnew array<unsigned char>(getFrameBufferSize());
    unsigned char* nativeBytes = new unsigned char[FrameBuffer->Length];
    
    Bitmap^ bmp = gcnew Bitmap(m_iBmpWidth, m_iBmpHeight, PixelFormat::Format24bppRgb);								
    BitmapData^ bmpData = bmp->LockBits(Rectangle(0,0,bmp->Width,bmp->Height),
    				ImageLockMode::WriteOnly, 
    													PixelFormat::Format24bppRgb);
    
    do{
    ...
    
    //Arrays befüllen
    //Bitmap befüllen...
    
    bmp->Dispose() //FEHLER: 'Dispose': Ist kein Element von 'System::Drawing::Bitmap'
    ...
    }while()
    

    Wie kann ich z.B. das Bitmap Objekt wieder Resetten, damit ich es im nächsten Durchlauf wieder beschreiben kann. Die Dispose() funktion wird zwar durch IntelliSense angezeigt, jedoch beim Compiliervorgang kommt die oben beschriebene Fehler. Wie kann ich auch die beiden Arrays wieder in den Ursprungszustand versetzen?

    Vielen Dank für eure Hilfe!



  • In C++/CLI wird Dispose nicht direkt aufgerufen, sondern über delete.

    Also anstelle von bmp->Dispose(); einfach delete bmp; schreiben.

    Oder lieber grade anstatt Bitmap^ bmp einfach nur Bitmap bmp verwenden. Dabei wird dann beim verlassen des Scopes automatisch delete (= Dispose()) aufgerufen.

    Simon


Anmelden zum Antworten