RAPI Approccio: 1 istanza statico per l'applicazione intere WinForms vs creare, connect, dispose

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

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top