RAPI Ansatz: 1 statische Instanz für die gesamte winforms app vs erstellen, connect, dispose

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

Frage

An vielen Stellen in unserer Anwendung haben wir Code wie folgt:

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

Das hat bisher gut funktioniert. Wir haben nie mehr als 1 rapi Instanz zu einer Zeit. Bis jetzt:

Aber jetzt wollen wir für die Connect-Veranstaltung auf rapi hört. Wir tun es wie folgt aus:

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“ funktioniert recht gut, solange ich auf neue und andere connect RAPI Objekte werden nicht gestartet. Aber sobald ich Newing auf andere RAPI Objekte starten, werden die Verbindungs- / Trenn Ereignisse scheinen, um Feuer aus.

Wäre es besser funktioniert nur 1 statische Instanz von RAPI für die gesamte App zu haben? Haben Sie eine andere Frage? Danke.

War es hilfreich?

Lösung

Logisch, ist RAPI eine einzige Verbindung zwischen dem PC und dem Gerät. Es macht keinen Sinn für Ihre Anwendung machen, um auch mehrere Verbindungen zu unterstützen. Ich würde machen einen Singleton Klasse dass hüllt den RAPI Anrufe und macht alles für Sie Ihre Anrufe, so dass jeder, dass durch diese eine Klasse auf das Gerät Bedürfnis Gespräch geht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top