RAPI Approccio: 1 istanza statico per l'applicazione intere WinForms vs creare, connect, dispose
-
27-09-2019 - |
Domanda
In molti posti nella nostra applicazione abbiamo codice come questo:
using(RAPI rapi = new RAPI())
{
bool connected = TryToConnectWithTimeout(rapi);
if(connected)
DoSomethingWithRapi(rapi);
}
Questo ha funzionato bene finora. Non abbiamo mai più di 1 istanza rapi alla volta. Fino ad ora:
Ma ora vogliamo intercettare l'evento di connessione sul rapi. Lo stiamo facendo in questo modo:
void StartMonitoringRapiConnection()
{
_rapi = new RAPI();
_rapi.RAPIConnected += new RAPIConnectedHandler(_rapi_RAPIConnected);
_rapi.RAPIDisconnected += new RAPIConnectedHandler(_rapi_RAPIDisconnected);
_rapi.Connect(false,-1);
}
private void _rapi_RAPIConnected()
{
DoWorkWhenRapiConnects();
}
private void _rapi_RAPIDisconnected()
{
//Listen for the next time that rapi connects
_rapi.Connect(false,-1);
DoWorkWhenRapiDisconnects();
}
"StartMonitoringRapiConnection" funziona abbastanza bene finché io non metto a nuovo e collegare altri oggetti RAPARE. Ma una volta che comincio NEWING fino altri oggetti RAPARE, gli eventi di connessione / disconnessione sembrano sparare fuori uso.
dovrebbe funzionare meglio avere solo 1 istanza statica del RAPI per l'intera app? Hai qualche altro consiglio? Grazie.
Soluzione
Logicamente, RAPI è una singola connessione tra il PC e il dispositivo. Non ha senso per la vostra applicazione per anche supportare più connessioni. Mi piacerebbe fare un Singleton classe che avvolge le chiamate RAPARE e rende tutte le chiamate per voi in modo che ognuno che ha bisogno di parlare con il dispositivo passa attraverso quella classe uno.