1

在我们的应用程序的许多地方,我们都有这样的代码:

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

到目前为止,这运作良好。我们一次不会有超过 1 个 rapi 实例。到目前为止:

但是现在我们要监听 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();
    }

只要我不开始新建和连接其他 RAPI 对象,“StartMonitoringRapiConnection”就可以很好地工作。但是一旦我开始更新其他 RAPI 对象,连接/断开连接事件似乎会乱序触发。

整个应用程序只有 1 个静态 RAPI 实例会更好吗?你还有什么建议吗?谢谢。

4

1 回答 1

1

从逻辑上讲,RAPI 是 PC 和设备之间的单一连接。你的应用甚至支持多个连接是没有意义的。我会创建一个单例类来包装 RAPI 调用并为您进行所有调用,以便需要与设备通信的每个人都通过该类。

于 2010-04-16T17:57:46.067 回答