Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881

    connessioni e datareader

    In asp classic quando chiudevi una connessione e la settavi a nothing, insieme alla connessione morivano automaticamente anche i recordset che ad essa si appoggiavano, liberando quindi le risorse allocate dal server per la gestione dei dati.
    Mi è venuto il "sempre-sano" dubbio che in aspNet non sia così: quando chiudo e setto a nothing una SQLconnection defungono con essa anche gli SQLdatareader che usano quella connessione o bisogna chiudere "manualmente" e mettere a nothing anche loro?... chi mi illumina?

    (so che gli oggetti andrebbero trattati come entità a se stanti e che quindi sarebbe buona norma chiuderli a manina ma se ci sono automatismi che già lo fanno da soli è sciocco non approfittarne)
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    dopo chiusa la connessione, fai la dispose del command, e per il resto ci pensa il garbage collector a pulire la memoria dopo un tot di tempo, se non vuoi farlo tu manualmente.

    MI SEMBRA che il tempo di azione del garbage collector sia configurabile
    https://msdn.microsoft.com/it-it/lib...v=vs.110).aspx


    Oppure in maniera piu' semplice e professionale usa il costrutto USING.
    Ultima modifica di djciko; 10-07-2015 a 11:29

  3. #3
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    muy obligado
    il garbage collector l'avevo forgotten :-)
    Ultima modifica di djciko; 10-07-2015 a 11:29
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    guarda, il costrutto USING fa tutto da solo...usa quello
    Ultima modifica di djciko; 10-07-2015 a 11:27

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    -edit-

    se ricordo bene, il dispose non serve perchè la fa il costrutto using

    ma dico, mi pare, perchè il caldo di questi giorni mi offusca le idee.

    Ultima modifica di djciko; 10-07-2015 a 11:28
    Pietro

  6. #6
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    grazie a tutti
    Allora qui dicono che il costrutto using chiude la connessione da solo:
    codice:
    Per accertarsi che le connessioni siano sempre chiuse, aprire la connessione all'interno di un blocco using, come visualizzato nel frammento di codice riportato di seguito. Tale operazione verifica la chiusura automatica della connessione quando il codice esce dal blocco.
    
    Using connection As New SqlConnection(connectionString)
        connection.Open()
        ' Do work here; connection closed on following line.
    End Using
    Non ho ancora ben chiaro se la chiusura della connessione comporta anche la chiusura dei datareader aperti con essa or not ma comunque c'è lo spazzino (garbage collector) che eventualmente lavora per me
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Quote Originariamente inviata da pietro09 Visualizza il messaggio
    Inoltre, se ricordo bene, il dispose non serve perchè la fa il costrutto using
    si, la Using fa tutto da sola infatti. O l'uno o l'altro metodo, cioe' o la Using oppure la dispose e la chiusura a mano.

    Non oso aprire visual studio, e' troppo bianco e grigio ed aumenta i gradi
    Ultima modifica di djciko; 10-07-2015 a 11:28

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Quote Originariamente inviata da supermac Visualizza il messaggio
    grazie a tutti
    ...
    Non ho ancora ben chiaro se la chiusura della connessione comporta anche la chiusura dei datareader aperti con essa or not ma comunque c'è lo spazzino (garbage collector) che eventualmente lavora per me
    usa la using e non pensarci piu' !
    fa tutto da sola, come ampiamente scritto.

    Guarda qui:

    http://stackoverflow.com/questions/2...eader-close-it

    Quasi ad inizio pagina e poi ripetuto:
    "Yes.
    using calls Dispose. Calling Dispose on SqlDataReader closes it."

    O fai tutto a mano, oppure usi il costrutto Using. Nulla di piu' semplice. Ciao.

    Ultima modifica di djciko; 10-07-2015 a 11:26

  9. #9

  10. #10
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    Ok link illuminante anche per l'altro dubbio:
    La USING effettua la dispose la quale effettua la chiusura automatica, ma al link indicato viene usato USING sulla connessione e USING anche sul datareader, il che fa intendere che l'evaporazione della connessione non comporta l'evaporazione del datareader!
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.