Ok risolto una parte , ora il multithreading funziona , ora però vorrei cercare di risolvere un problema legato al cross threading (mado tutto in un giorno ho imparato![]()
![]()
)
Nuovo codice
Infatti al posto dei messagebox.show in DOWORK(nel ciclo if else) dovrebbero esserci dei flussi di scrittura in un eventuale file di Log ... ma se lo faccio mi solleva un eccezione di Crossthreadingcodice:Private Sub SmsPanel_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Codice non rilevante .... End Sub Private Sub ConnettiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnettiToolStripMenuItem.Click BackgroundWorker1.RunWorkerAsync() End Sub Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork Dim Comando As OleDbCommand = New OleDbCommand() Dim Comando_Server As OleDbCommand = New OleDbCommand() Dim ServerAdapter As New OleDbDataAdapter Dim Adapter As New OleDbDataAdapter Dim ANUMBER As String Dim ServerReader As System.Data.OleDb.OleDbDataReader Dim ContaRighe As Integer Comando_Server.Connection = Connessione_server Comando_Server.CommandText = "SELECT * FROM INBOX" ServerAdapter.SelectCommand = Comando_Server Connessione_server.Open() ServerReader = Comando_Server.ExecuteReader() While ServerReader.Read ANUMBER = ServerReader("ANUMBER") Comando.Connection = Connessione Comando.CommandText = "SELECT * FROM numeri INNER JOIN email ON email.id_email = numeri.idemail WHERE numero = @ANUMBER" Comando.Parameters.AddWithValue("@ANUMBER", ANUMBER) 'Apriamo la connessione Connessione.Open() 'Eseguiamo e vediamo se esiste una corrispondenza ! Try ContaRighe = Comando.ExecuteScalar() Catch Eccezione As OleDb.OleDbException MessageBox.Show(Eccezione.Message) End Try 'Se esiste blocchiamo l'aggiunta If ContaRighe = 1 Then MessageBox.Show(Now() & "Trovato") Else MessageBox.Show(Now() & "Non trovato") End If Connessione.Close() End While Connessione_server.Close() End Sub End Class
mi sono documentato e bisogna usare l'evento ProgressChanged di Backgroundworker ... ma solo che non accetta valori in stringa o sbaglio?? ci sono altre soluzioni?

Rispondi quotando