RAPI Enfoque: 1 instancia estática para la aplicación winforms enteras vs crear, conectar, disponer
-
27-09-2019 - |
Pregunta
En muchos lugares de nuestra aplicación tenemos un código como este:
using(RAPI rapi = new RAPI())
{
bool connected = TryToConnectWithTimeout(rapi);
if(connected)
DoSomethingWithRapi(rapi);
}
Esto ha funcionado bien hasta ahora. Nunca tenemos más de 1 instancia rapi a la vez. Hasta ahora:
Pero ahora queremos detectar el evento de conexión en rapi. Lo estamos haciendo de esta manera:
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" funciona bastante bien, siempre y cuando no comienzo a una nueva y otros objetos RAPI conexión. Pero una vez que comience a Newing otros objetos RAPI, los eventos de conexión / desconexión parecen disparar fuera de orden.
¿funcionaría mejor tener sólo 1 instancia estática de RAPI para toda la aplicación? ¿Tiene algún otro consejo? Gracias.
Solución
Lógicamente, RAPI es una única conexión entre el PC y el dispositivo. No tiene sentido para su aplicación incluso para soportar múltiples conexiones. Me gustaría hacer un Singleton clase que envuelve las llamadas y RAPI hace que todas las llamadas para usted de modo que todo el mundo que tiene que hablar con el dispositivo pasa a través de esa clase uno.