Abordagem RAPI: 1 instância estática para todo o aplicativo WinForms vs criar, conectar, descartar

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

Pergunta

Em muitos lugares em nossa aplicação, temos código como este:

using(RAPI rapi = new RAPI())
{
  bool connected = TryToConnectWithTimeout(rapi);
  if(connected)
    DoSomethingWithRapi(rapi);
}

Isso funcionou bem até agora. Nunca temos mais de uma instância do Rapi por vez. Até agora:

Mas agora queremos ouvir o evento Connect no Rapi. Estamos fazendo assim:

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();
    }

"StartMonitoringRapPonection" funciona muito bem, desde que eu não comece a usar e conectar outros objetos RAPI. Mas uma vez que começo a recompor outros objetos RAPI, os eventos de conexão/desconexão parecem disparar fora de ordem.

Funcionaria melhor ter apenas uma instância estática do RAPI para todo o aplicativo? Você tem algum outro conselho? Obrigado.

Foi útil?

Solução

Logicamente, o RAPI é uma única conexão entre o PC e o dispositivo. Não faz sentido para o seu aplicativo suportar várias conexões. Eu faria um Classe Singleton Isso encerra as ligações do Rapi e faz todas as suas chamadas para que todos que precisam conversar com o dispositivo passem por essa classe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top