RAPI方法:整个winforms应用程序的1个静态实例vs create,connect,dispose

时间:2010-04-16 16:33:09

标签: compact-framework opennetcf rapi

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

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();
    }

“StartMonitoringRapiConnection”只要我没有开始新建并连接其他RAPI对象就可以正常工作。但是一旦我开始新建其他RAPI对象,连接/断开事件似乎就会失灵。

为整个应用程序只有一个静态RAPI实例会更好吗?你还有其他建议吗?感谢。

1 个答案:

答案 0 :(得分:1)

逻辑上,RAPI是PC和设备之间的单一连接。您的应用甚至不支持多个连接也没有意义。我会制作一个Singleton class来收听RAPI电话并为你拨打所有电话,这样每个需要与设备通话的人都会通过那一个电话。