Creazione UDP Socket in modo dinamico

Ho creato una classe per la gestione della comunicazione via UDP. (UDPTEST)
La classe crea in modo dinamico un oggetto UDPSocket e ne gestisce l’ apertura, la chiusura, il protocollo,Ecc.
Ho creato una variabile globale -> ProvaUDP as UDPTEST
All’ apertura della finestra ho inserito ProvaUDP = New UDPTEST.
Nel Programma utilizzo i metodi della classe UDPTEST senza alcun problema.

Quando voglio creare un altro collegamento utilizzando sempre la classe UDPTEST ho dei problemi.
Creo un’ altra variabile globale -> Prova2UDP as UDPTEST
All’ apertura della finestra ho aggiunto Prova2UDP = New UDPTEST.

Ora nel mio programma ho 2 oggetti UDPTEST completamente distini (ProvaUDP e Prova2UDP)

Quando apro i socket di ProvaUDP e Prova2UDP, l’ apertura dell’ ultimo socket comporta la chiusura del socket gi aperto. (e viceversa)

ProvaUDP.OpenSocket(5000) Prova2UDP.OpenSocket(6000)

Pu darsi che tutti gli oggetti UDPSocket generati dalla classe UDPTEST facciano sempre riferimento allo stesso oggetto UDPSocket ?

Dipende dall’implementazione che ha scritto, e che non descrivi
Se la tua classe crea un nuovo UDPSocket (perch lo crea internamente o lo crea perch una sottoclasse) non dovresti aver problemi.
Se usi un socket shared nella classe, allora utilizzi sempre lo stesso e chiaramente va in conflitto.

In linea di principio potresti aprire tutti i socket che vuoi (e quindi anche UDPsocket)

Grazie per il consiglio, infatti prima avevo dichiarato il socket come Shared, ora avendolo dichiarato come variabile locale il tutto funziona perfettamente.

Non ho capito perch il compilatore non mi abbia dato un errore di conflitto. Di principio se la variabile shared comunque ha una sua “collocazione” definita e la chiamata ai metodi univoca
ad esempio:

ProvaUDP.miosocket.connect

o nei metodi presenti nella classe

me.miosocket.connect

Un elemento shared fa “parte” (molto tra " ) della classe
Le propriet/metodi della classe non fanno parte della shared.

Per cui da un istanza non c’ problema a chiamare una propriet o metodo shared

Se dalla shared cercavi di richiamare un metodo di istanza (classe) allora avresti avuto un errore.