ciao, la mia applicazione richiama un thread per l'avvio di una routine che effettua il download di file via ftp. in fase di esecuzione, ma non sempre, del thread appare un messaggio di errore, che è il seguente:
codice:
LoaderLock è stata rilevata
Message: Tentativo di esecuzione gestita all'interno del blocco OS Loader. Non provare a eseguire codice gestito all'interno di una DllMain o di una funzione di inizializzazione delle immagini. Questa operazione può causare il blocco dell'applicazione.
il thread è questo
codice:
Public Sub ThreadControlloIstruzioniRemote()

        Try

            'controlla che ci sia una rete disponibile per la connessione
            If My.Computer.Network.IsAvailable = True Then

                'controlliamo se il thread è in esecuzione "per non lanciare una seconda copia"
                If Not (ThControlloIstruzioniRemote Is Nothing) AndAlso ThControlloIstruzioniRemote.IsAlive Then

                    'avviso utente
                    MsgBox("Si stà tentando di effettuare un controllo di istruzioni remote via Ftp ma il servizio è attualmente impegnato." & vbCrLf & "Tenta l'operazione in un secondo momento.", MsgBoxStyle.Information)

                Else
 
                    'creo una nuova "instance" di thread
                    ThControlloIstruzioniRemote = New Thread(AddressOf SubIstruzioniRemote)

                    ThControlloIstruzioniRemote.SetApartmentState(ApartmentState.STA)

                    'imposta un nome
                    ThControlloIstruzioniRemote.Name = "ThControlloIstruzioniRemote"

                    'lanciamo il thread
                    ThControlloIstruzioniRemote.Start()

                End If

            Else

                'nessuna rete disponibile per la connessione

                'avviso utente
                MsgBox("Attenzione, non è possibile completare l'operazione per mancanza di rete." & vbCrLf & "Tenta l'operazione dopo aver collegato il computer ad una rete internet.", MsgBoxStyle.Information)

            End If

        Catch ex As Exception

            MsgBox(Err.Description.ToString)    'Gestione Errore

        End Try

    End Sub
e la routine è la seguente
codice:
Sub SubIstruzioniRemote()

         'percorso del file per l'upload
        Dim PercorsoLocale As String = My.Computer.FileSystem.SpecialDirectories.Desktop.ToString & "\" & CodiceApplicazione.ToString & ".txt"
        Dim PercorsoServer As String = "ftp://" & My.Settings.Funzionalità_FTP_Host.ToString & "/" & CodiceApplicazione.ToString & CodiceClient.ToString & CodiceUtente.ToString & ".txt"

        Try

            'imposta il percorso del file da scaricare
            If ControlloDirectoryApplicazione() = True Then

                'dichiara gli oggetti per la connessione al server

                'variabile per effettuare la richiesta
                Dim Ftp_richiesta As WebRequest = DirectCast(WebRequest.Create(PercorsoServer.ToString), WebRequest)

                'impostazione delle variabili
                Ftp_richiesta.Credentials = New System.Net.NetworkCredential(My.Settings.Credenziali_FTP_Login.ToString, My.Settings.Credenziali_FTP_Password.ToString)

                'impostazione del metodo
                Ftp_richiesta.Method = WebRequestMethods.Ftp.DownloadFile

                'variabile per il controllo della risposta
                Dim Ftp_risposta As WebResponse = CType(Ftp_richiesta.GetResponse, FtpWebResponse)

                'variabili per il controllo del flusso dati
                Dim Stream As Stream = Nothing
                Dim Reader As StreamReader = Nothing
                Dim Writer As StreamWriter = Nothing

                'avviamento della procedura di lettura del flusso e scrittura
                Stream = Ftp_risposta.GetResponseStream
                Reader = New StreamReader(Stream, System.Text.Encoding.UTF8)
                Writer = New StreamWriter(PercorsoLocale.ToString, False)
                Writer.Write(Reader.ReadToEnd)

                'rilascio delle risorse
                Stream.Close()
                Reader.Close()
                Writer.Close()

            Else

                'il ControlloDirectoryApplicazione ha avuto esito negativo
                'avviso utente
                MsgBox("Attenzione, si sta tentando di scaricare un file contenente le istruzioni remote, ma non è possibile registrarlo nel computer locale." & vbCrLf & "La procedura verrà terminata.", MsgBoxStyle.Information)

            End If

        Catch ex As Exception

            MsgBox(Err.Description.ToString)    'Gestione Errore

        End Try
Cosa sbaglio?