Se eseguo l' analisi del codice, relativamente a questa funzione, che ritorna il testo di un file:

codice:
     Private Function LeggeLogFile() As String
        Dim LogFile As String

        Try

            Dim fs As FileStream = New FileStream(My.Settings.LogPath &  "\LogFile.txt", _
               FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
            Dim sr As StreamReader = New StreamReader(fs)
            fs.Seek(0, SeekOrigin.Begin)
            LogFile = sr.ReadToEnd()
            sr.Close()
            fs.Close()

            Return LogFile

        Catch ex As Exception

            Return Nothing

        End Try

    End Function
ottengo tre avvisi:

Avviso 41 CA2000 : Microsoft.Reliability : Nel metodo 'frmMain.LeggeLogFile()' chiamare System.IDisposable.Dispose sull'oggetto 'fs' prima che tutti i relativi riferimenti siano esterni all'ambito.
e questo:
Avviso 43 CA2202 : Microsoft.Usage : L'oggetto 'fs' può essere eliminato più volte nel metodo 'frmMain.LeggeLogFile()'. Per evitare di generare System.ObjectDisposedException, è consigliabile chiamare Dispose su un oggetto non più di una volta
e questo:
Avviso 42 CA1822 : Microsoft.Performance : Il parametro 'this' (o 'Me' in Visual Basic) di 'frmMain.LeggeLogFile()' non è mai utilizzato. Contrassegnare il membro come static (o Shared in Visual Basic) o utilizzare 'this'/'Me' nel corpo del metodo o almeno una funzione di accesso delle proprietà, se appropriato.
Per cercare di rimediare al primo avviso ho pensato di modificare il codice così:

codice:
     Private Function LeggeLogFile() As String
        Dim LogFile As String
        Dim fs As FileStream 

        Try

            fs = New FileStream(My.Settings.LogPath & "\LogFile.txt", FileMode.Open, _
               FileAccess.Read, FileShare.ReadWrite)
            Dim sr As StreamReader = New StreamReader(fs)
            fs.Seek(0, SeekOrigin.Begin)
            LogFile = sr.ReadToEnd()
            sr.Close()

            Return LogFile

        Catch ex As Exception

            Return Nothing

        Finally

            fs.Close()

        End Try

    End Function
ma ottengo un ulteriore avviso che mi dice che la variabile fs (in Finally) viene utilizzata prima che le sia stato assegnato un valore.

Riguardo al secondo avviso proprio non vedo dove fs possa essere chiusa più volte.

Il terzo è letteralmente arabo...

Ty for any info