Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Immagini pulsanti e memoria
Forum - C# / VB.NET - [VB.NET] Immagini pulsanti e memoria - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 11:04
Giovedì, 10/09/2009
Comunque sembrerebbe che caricando l'immagine da resources il compilatore crei una nuova istanza e non sia un semplice passaggio di reference, altrimenti i 200kb in più ad ogni assegnamento non si spiegerebbero!
Credo che il vb.net non salvi nei resources l'istanza pronta, ma il file immagine così com'è, per questo verrebbe creata ogni volta una nuova istanza che va ad occupare memoria!

Ultima modifica effettuata da manvb.net il 10/09/2009 alle 11:09
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:40
Venerdì, 11/09/2009
No, la proprietà è di tipo Bitmap. E' il codice della proprietà, similmente a quanto avevo detto io su clone:
Codice sorgente - presumibilmente VB.NET

  1. Dim obj As Object = ResourceManager.GetObject("immagine", resourceCulture)
  2. Return CType(obj,System.Drawing.Bitmap)


Devi modificare il codice della classe MyResources, usando l'istanziamento differito: crei delle variabili locali che inizializzi solo la prima volta che ne viene richiesto il valore (modificando il codice scritto nelle proprietà). Es.:
Codice sorgente - presumibilmente VB.NET

  1. Private _Img As Bitmap
  2.  
  3. Friend ReadOnly Property Img() As System.Drawing.Bitmap
  4.     Get
  5.         If _Img Is Nothing Then
  6.             Dim obj As Object = ResourceManager.GetObject("BlueSocket", resourceCulture)
  7.             _Img = CType(obj, System.Drawing.Bitmap)
  8.         End If
  9.         Return _Img
  10.     End Get
  11. End Property


PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 22:55
Sabato, 12/09/2009
Beh io ho notato che creando 4 variabili ed assegnando loro le immagini come mi aveva consigliato manvb.net è servito a far risparmiare ram, però il fenomeno rimane, anche se in forma decisamente ridotta, secondo te otem che dovrei fare?

Ultima modifica effettuata da dedalux il 13/09/2009 alle 1:30
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:59
Domenica, 13/09/2009
Sei sicuro che la memoria venga usata proprio per le immagini?

Btw, FTA!

PM Quote
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 12:25
Domenica, 13/09/2009
Penso di si, perche in taskmanager la vedo salire solo quando sposto il cursore dentro e fuori al pulsante, basta quello x farla salire. Poi cmq succede la stessa cosa impostando su .Visible = True/False un oggetto componente della form...

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo