|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 1
|
Applicazione mfc con multithread
Salve a tutti,
sto aggiungendo una funzionalità client server ad una applicazione mfc, dato che mi serve un server sempre in ascolto di connessioni entranti ho realizzato questo su un processo secondario che mi riceve una stringa e la memorizza in una variabile e si autosospende. Il flusso del programma si sposta al processo principale costituito dall'interfaccia, il mio problema e appunto qui, io richiamo la procedura server all'interno di un onClick button event condizionato da due radio button ON/OFF. All'interno di onClick, se è selezionato ON, crea il thread server e successivamentr, parte un ciclo while(condizionato dallo stato di ON 0/1) dove, una volta che la stringa è stata ricevuta, questa viene analizzata e in base all'esito dell' analisi si avvia un'azione corrispondente, finita l'esecuzione della quale viene ripreso il serverThread e controllato lo stato di ON. Il mio problema è che se l'azione eseguita è complicata il sistema va in crash ma secondo me non perchè l'operazione è troppo pesante perchè se la faccio senza passargli il comando da remoto la fa tranquillamente, può capitare invece che l'applicazione non riesca ad aggiornare l'interfaccia stessa, è possibile che ciò accada? o meglio se mi trovo in una routine legata ad un bottone dell'interfaccia, questa può essere aggiornata se la routine stessa non è finita? Ad esempio: io dico al server di aprire una immagine, lui riceve la stringa la segnala all'interfaccia e questa dopo l'analisi della stringa apre un immagine nell'apposito pannello. Invece se gli dico di calcolare qualcosa sull'immagine che comporta come risultato un aggiornamento della stessa immagine e di caselle di testo si blocca. Inoltre se mi trovo in una routine legata ad un bottone dell'interfaccia (es.onClickEvent) posso interagire con l'interfaccia senza che questa si blocchi? Scusate se non si capisce bene il problema ma sinceramente sono alla prima esperienza sulle applicazioni mfc e non so di preciso quale sia ho capito solo che è all'interno di questo ciclo. Grazie per le eventuali risposte. Ultima modifica di Karusu : 12-06-2009 alle 15:22. Motivo: completamento domanda |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
E' possibile che sia un problema di concorrenza. Molti framework per la creazione di interfacce grafiche a finestra sono a thread singolo cioè prevedono che le operazioni di lettura o scrittura che coinvolgono i componenti di quel framework siano eseguite da un solo flusso di esecuzione. Il mancato rispetto di questa condizione può causare una corruzione dello stato di un componente. Verifica sulla documentazione del framework che usi se è questo il caso. Se così fosse allora dovresti garantire che il tuo programma deleghi l'accesso ai componenti del framework all'unico thread autorizzato a farlo - cioè il thread che esegue il ciclo di aggiornamento della GUI.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:30.



















