Подход RAPI: 1 Статический экземпляр для всего приложения WinForms VS Создание, Connect, Dissose

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

Вопрос

Во многих местах в нашем приложении у нас есть код, как это:

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

Это работало хорошо. У нас никогда не было более 1 экземпляра RAPI за раз. До настоящего времени:

Но теперь мы хотим слушать событие Connect на Rapi. Мы делаем это так:

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» работает довольно хорошо, если я не начинаю новых и подключающую другие объекты RAPI. Но как только я начну начать новые объекты RAPI, события Connect / Disconnect, кажется, выходили из строя.

Будет ли работать лучше, чтобы иметь всего 1 статический экземпляр RAPI для всего приложения? У вас есть какие-либо другие советы? Спасибо.

Это было полезно?

Решение

Логично, Rapi - это одно соединение между ПК и устройством. Ваше приложение не имеет смысла даже поддерживать несколько соединений. Я бы сделал Singleton Class. Это касается звонков RAPI и делает все ваши звонки для вас, чтобы все, что нужно поговорить с устройством, проходит через этот класс.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top