Non usare un thread separato.Originariamente inviato da Kahm
1)dalla toolbar spingo il pulsante "esporta" dopo la chiamata alla routine,do un messaggio di avviso che è stato tutto esportato, peccato che avendo dei thread mi da prima il messaggio, e solo dopo esporta!!!,come posso far eseguire prima l'esportazione e solo dopo il messaggio?
Non usare un thread separato.2)nella routine esporta(), chiamo 2 sub che mi esportano, una gli articoli e l'altra le anagrafiche, come posso far eseguire la rotine esportaarticoli(), solo dopo che è stato eseguito esportaAnagrafica()?
Se il tuo unico obiettivo è di evitare di bloccare l'interfaccia grafica fai così:
Importantissimo: usa Option Explicit, Option Strict e DICHIARA SEMPRE LE VARIABILI CHE INTENDI USARE; quella variabile "t" che spunta dal nulla nel tuo codice è un'offesa a tutte le norme di buona programmazione e un potenziale bug futuro.codice:Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick Dim t As New System.Threading.Thread(AddressOf Esporta) Select Case e.Button.Text Case Is = "Esporta" t.Start() End Select End Sub Private Sub Esporta() If Me.CHK_Vettore.Checked = True Then EsportaAnagrafica() End If If Me.CHK_Articoli.Checked = True Then EsportaArticoli() End If MsgBox("Aggiornamento eseguito con successo", MsgBoxStyle.Information, "Export") end sub
Ulteriori info:
Option Explicit and Option Strict in Visual Basic .NET or in Visual Basic 2005
"Option Strict Off" considered harmful
Coding Horror: Option Strict and Option Explicit in VB.NET 2005
Curiosità che ho notato: da quando i programmatori di VB hanno "scoperto" i thread li usano in tutte le salse, anche quando non solo non servono, ma sono anzi controproducenti.

Rispondi quotando