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

    [VB.Net] Thread e modifica delle Label durante l'esecuzione

    Ciao, il mio problema è il segueNte:

    La mia applicazione si connette ad una cartella FTP, ed esegue una lunga serie di operazioni di controllo, Upload e Download necessarie per condividere le informazioni con altre applicazioni via Intrnet.

    Le operazioni sono piuttosto lunghe, e tutto funziona a meraviglia.
    Il problema è che vorrei, attraverso una WinForm, una label e una ProgressBar informare l'utente dello stato delle operazioni.

    Data la complessita delle operazioni, queste vengono eseguite da un Thread diverso dal Main, per evitare di mantenere l'intera applicazione impegnata.

    La routine dove si trova il codice che esegue le istruzioni si chiama "DownloadFileFTP" e si trova in un modulo apparte e viene avviata nel modo seguente nell'evento click di un Button in un form contenente anche una Label che viene costantemente aggiornata (la proprietà Text) indicando l'operazione corrente e una prograssbar.

    codice:
    'Avvia un thread per eseguire le operazioni                               
    Control.CheckForIllegalCrossThreadCalls = False                                
    Dim Th1 As New Thread(AddressOf DownloadFileFTP)                                
    Th1.SetApartmentState(ApartmentState.STA)                                
    Th1.Start()
    Con questa soluzione la label non viene modificata ma non viene generata nessuna eccezione o errore.

    Secondo voi dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    per fare operazioni cross thread lascia perdere la proprietà statica di Control e usa dei delegati

  3. #3
    Ciao.
    Il motivo per cui non ricevi nessuna eccezione è questa riga di codice:
    codice:
    Control.CheckForIllegalCrossThreadCalls = False
    da modificare rigorosamente con quest'altra
    codice:
    Control.CheckForIllegalCrossThreadCalls = True
    o semplicemente omettendo l'impostazione della variabile CheckForIllegalCrossThreadCalls
    e creando un delegate deputato a fare le operazioni di chross thread.

    Facci sapere....
    Ciao

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.