Problema con thread

mercoledì 13 giugno 2007 - 15.53

DirkPittZ1000 Profilo | Newbie

Ho risolto!
Dunque:
bisogna creare un delegato per il metodo che deve scrivere nella text box
delegate void SetTextCallback(string text);

E poi implementare il metodo per settare il testo in questo modo.

private void WriteVisualLog(string text)
{
if (txLog.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(WriteVisualLog);
this.Invoke(d, new object[] { text });
}
else
{
txLogSQLtoORA.Text = text + "\r\n" + txLogSQLtoORA.Text; ;
}
}

E quinid nell'evento richiamarlo semplicemente così:
void sto_DataWrite(string descr)
{
WriteVisualLog(descr);
}

Ciao!

------- PRIMO POST -----------------------------------------------------------------------------------------------------------------------------------------

Ciao!
Ho un'applicazione windows form che nel costruttore del form principale (formMain) crea un thread e comincia a eseguire in background alcune operazioni.

SQLtoORA sto = new SQLtoORA(applicationLog);
sto.DataWrite += new SQLtoORA.onDataWriteHandler(sto_DataWrite);
wrkSTO = new Thread(new ThreadStart(sto.Start));
wrkSTO.Start();

Il thread solleva degli eventi che vengono catturati dal formMain (DataWrite).
La seguente è la gestione da parte di formMain dell'evento DataWrite:

void sto_DataWrite(string descr)
{
txLogSQLtoORA.Text = descr;
}

All'esecuzione dell'assegnazione del testo mi viene sollevata la seguente eccezione:
System.InvalidOperationException: Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'txLogORAtoSQL' da un thread diverso da quello da cui è stata eseguita la creazione.

Avevo capito che il codice dell'evento sto_DataWrite veniva eseguito dal formMain, non dal thread...
Come posso ovviare a questo problema??

grazie in anticipo!

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5