RAPI Enfoque: 1 instancia estática para la aplicación winforms enteras vs crear, conectar, disponer

StackOverflow https://stackoverflow.com/questions/2654618

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top