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

    [VB.NET] Errore su avvio thread, ma la routine viene completata

    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?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova a disabilitare il controllo LoaderLock :

    - comando Exceptions dal menu Debug

    - Managed Debug Assistants

    - Colonna Throw in corrispondenza della voce LoaderLock.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.