Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB2010] Gestione di System.IDisposable

    Se faccio l' analisi del codice di un mio programma relativamente alla riga di codice sotto riportata:

    codice:
     File.Create(MyHandsFolder & "\MyHands.txt")
    ottengo un messaggio di errore

    'Nota: MyHandsFolder è dichiarata pubblica in Module1.... 'Public MyHandsFolder As String = .....

    CA2000 : Microsoft.Reliability :Nel metodo 'FrmMain.FrmMain_Load(Object, EventArgs)'
    chiamare System.IDisposable.Dispose sull'oggetto 'File.Create(Module1.MyHandsFolder
    & "\MyHands.txt")' prima che tutti i relativi riferimenti siano esterni all'ambito.
    Che vuol dire? Che codice devo scrivere? Il programma funziona perfettamente e a runtime non ottengo mai alcun errore quando creo il file...

    Ty

  2. #2
    File.Create restituisce un oggetto di tipo FileStream con cui puoi lavorare sul file, ma tu lì stai ignorando completamente il valore restituito, lasciando inutilmente un file aperto. Il GC dopo un po' probabilmente andrà ad eliminare l'oggetto creato dalla Create, ma nel frattempo il file risulta inutilmente aperto.
    Per questo, se intendi solo creare il file e non scriverci dentro, dovresti fare una cosa del genere:
    codice:
    File.Create(MyHandsFolder & "\MyHands.txt").Dispose(True)
    Se invece devi effettivamente scrivere nel file, usa un blocco Using, che si occupa da sé di richiamare la Dispose:
    codice:
    Using f As FileStream = File.Create(MyHandsFolder & "\MyHands.txt")
        '...
    End Using
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Il file lo creo ad inizio sessione (se non c' è già).... e durante la sessione ci scrivo molte volte con un:

    Using sw As StreamWriter = New StreamWriter(..............
    sw.WriteLine(.........

    cmq grazie della dritta... codice aggiunto ed errore sparito.

    Solo una precisazione: non accetta argomenti in .Dispose(), dà errore.... cmq funge lo stesso anche senza il (True)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.