RAPI Approche: 1 instance statique pour l'application entière WinForms vs créer, connecter, Éliminez

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

Question

Dans de nombreux endroits dans notre application, nous avons le code comme ceci:

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

Cela a bien fonctionné jusqu'à présent. Nous n'avons plus de 1 instance rapi à la fois. Jusqu'à présent:

Mais maintenant, nous voulons écouter l'événement de connexion sur rapi. Nous faisons comme ceci:

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 » fonctionne assez bien aussi longtemps que je ne commence pas à de nouvelles et d'autres objets de connexion RAPI. Mais une fois que je commence Newing jusqu'à d'autres objets RAPI, les événements de connexion / déconnexion semblent tirer hors d'usage.

Ne serait-il mieux travailler pour avoir seulement 1 instance statique de RAPI pour l'application entière? Avez-vous d'autres conseils? Merci.

Était-ce utile?

La solution

Logiquement, RAPI est une seule connexion entre le PC et le dispositif. Il n'a pas de sens pour votre application pour supporter même les connexions multiples. Je ferais un Singleton classe qui enveloppe les appels RAPI et fait tous vos appels pour vous afin que tout le monde qui a besoin de parler à l'appareil passe par une classe que.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top