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

    [vb2010] Disporre un oggetto

    codice:
       Dim MyData As New DataTable("HH")
    
            Try
    
                MyData.Columns.Add("1")
                '..................
                ' decine di righe di codice ininfluenti per la mia domanda
            
               If Commands.Count <> OldCommands.Count Then
                    Return True
                Else
                    Return False
                End If
    
            Catch ex As Exception
                Debug.Print(ex.ToString)
                Return False
            Finally
                MyData.Dispose()
            End Try
    Se analizzo in codice ottengo:

    Avviso 31 CA2000 : Microsoft.Reliability : Nel metodo 'Module1.GetData()' chiamare System.IDisposable.Dispose sull'oggetto 'MyData' prima che tutti i relativi riferimenti siano esterni all'ambito....
    Ma, scusate, un blocco Finally non viene eseguito comunque?

    Se aggiungo un "MyData.Dispose()" prima del blocco Catch il messaggio non cambia.

    Se lo tolgo da prima del catch e lo aggiungo DOPO l' End Try mi dice che può essere eliminato più volte... ma lol.
    Ultima modifica di eziogsv; 23-02-2015 a 02:03

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da eziogsv Visualizza il messaggio
    codice:
       Dim MyData As New DataTable("HH")
    
            Try
    
                MyData.Columns.Add("1")
                '..................
                ' decine di righe di codice ininfluenti per la mia domanda
            
               If Commands.Count <> OldCommands.Count Then
                    Return True
                Else
                    Return False
                End If
    
            Catch ex As Exception
                Debug.Print(ex.ToString)
                Return False
            Finally
                MyData.Dispose()
            End Try
    Se analizzo in codice ottengo:



    Ma, scusate, un blocco Finally non viene eseguito comunque?

    Se aggiungo un "MyData.Dispose()" prima del blocco Catch il messaggio non cambia.

    Se lo tolgo da prima del catch e lo aggiungo DOPO l' End Try mi dice che può essere eliminato più volte... ma lol.
    Uhm.. togli

    Catch ex As Exception
    Debug.Print(ex.ToString)
    --> Return False
    Finally

  3. #3
    Quote Originariamente inviata da renygade Visualizza il messaggio
    Uhm.. togli

    Catch ex As Exception
    Debug.Print(ex.ToString)
    --> Return False
    Finally
    Non posso, per due motivi:

    1) Se ho una eccezione MI SERVE che il valore ritornato sia un False
    2) Se lo tolgo ottengo errore (giustamente): la Function non ritorna un valore in tutti i percorsi del codice....

    Comunque anche tenendomi l' errore in più... se levo il return l' avviso rimane....

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.