Thread e Form

martedì 13 luglio 2004 - 18.28

GvnnRules Profilo | Senior Member

Ciao a tutti,
Abbasso umilmente il capo e chiedo aiuto. Ecco la mia situazione:

Ho un thread che sta in ascolto su una porta tcp (praticamente è in un loop continuo). All'arrivo di un messaggio voglio aprire una nuova windows form, però quando all'interno del loop faccio lo show() della mia form, la form si apre, ma subito va in "not responding".
Ho provato a vedere cosa fà, praticamente dopo aver fatto lo show, ricomincia subito il loop e se ne frega della form che ho aperto.

Ora la mia domanda è: come faccio a evitare questo?
Spero di essere stato chiaro.

grazie mille.

Gvnn ... una volta Rulez :-(

Brainkiller Profilo | Guru

Ehilà mitico ! :)
E magari aprire un nuovo Thread a cui passi eventualmente come parametro un'istanza di classe Form2 per esempio e poi lo fai partire?
Mi pare che avevo fatto anche io una cosa simile e avevo risolto così.
Tenendo in Threads separati il tutto dovrebbe funzionare a meraviglia.
E' chiaro che facendo così ti sei creato un Thread in cui c'è il Listener e questo non ti blocca la GUI dell'applicazione principale.
Il socket sarà sincrono e quindi per definizione blocking ed è per questo che poi vai in not responding.

ciao
david

GvnnRules Profilo | Senior Member

Provato, ma quando faccio con il nuovo thread l'apertura della form, la vedo per un millisecondo e poi sparisce, ho fatto un codice del genere:

Form2 myForm = new Form2();
Thread myThread = new Thread(new ThreadStart(myForm.Show());
myThread.Start();

Lascia perdere maiuscole e minuscole, quando parte la form sparisce subito ... bo.

Gvnn

GvnnRules Profilo | Senior Member

Eureka!!!!
Grazie all'aiuto di Marco ho trovato la soluzione, allora non funzionava perchè la gestione dei controlli e delle altre form è gestioto da un thread di sistema, che naturalmente non posso saltare da un thread all'altro come se fosse niente. Ho dovuto creare un delegate sulla funzione di apertura di una nuova form, dopo di che ho fatto dalla form principale una invoke sul delagate e funziona ..... argh!

Gvnn ... forse ritornerò Rulez

almax Profilo | Junior Member

Probabilmente ho l ostesso problema ...
Avrei bisogno di capire bene la tua soluzione te ne sarei grato ...

Ho un thread per tenere in ascolto una porta in udp e alla ricezione dovrei aprire una form con un controllo webbrowser ...
Con form.show mi restituisce un errore ... Ho dovuto creare un exe esterno ed avviarlo .. ma la cosa non mi piace tanto si
rallenta troppo l'avvio...

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