Vi spiego brevemente il mio problema.
Ho una classe, che attraverso un Thread, controlla qualcosa, poi, ad un certo punto, scatena un evento definito nella classe stessa.
Il form principale ha dunque un oggetto di questa classe, e ha una routine che viene chiamata quando si scatena l'evento di quell'oggetto. Ora, questa routine, deve modificare un controllo del form, e l'operazione gli viene negata, poichè la routine fa parte di un Thread differente.... come risolvo il problema?

Ecco le parti rilevanti del mio codice

Questo nella classe che genera l'evento...

Codice PHP:
    public event EventMessageHandler ReciveData//Questa è la dichiarazione dell'evento
    
private void myThread()
    {
        
sr = new StreamReader(tcpSv.GetStream());
        
sw = new StreamWriter(tcpSv.GetStream());
        
sw.WriteLine(name);
        
sw.Flush();
        while ((
mex sr.ReadLine()) != "")
        {
            
ReciveData(mex);  //qua scateno l'evento
        
}
    } 
Questo invece nel form principale... Sia conn un oggetto della classe definita in parte sopra...
Codice PHP:
private void server_Connecting(Connection conn)
        {
            
this.conn conn;
            
conn.ReciveData+=new EventMessageHandler(conn_ReciveData); //collego l'evento alla routine
            
this.chatTxt.Text+="Client Connected\n";
        }
        private 
void conn_ReciveData(String mex)
        {
            
chatTxt.AppendText("Client: " mex '\n'); //qua lancia l'eccezione
        

Alla riga di codice chatTxt.AppendText("Client: " + mex + '\n'); mi viene lanciata questa eccezione:
Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'chatTxt' da un thread diverso da quello da cui è stata eseguita la creazione.

Come risolvo questo inconveniente? devo usare Invoke? però nella classe da me definita non so perchè, non ho disponibile questo metodo.