在我们的应用程序中的许多地方,我们都有如下代码:
using(RAPI rapi = new RAPI())
{
bool connected = TryToConnectWithTimeout(rapi);
if(connected)
DoSomethingWithRapi(rapi);
}到目前为止,这一点运行良好。我们从来不会一次有一个以上的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对象,connect/disconnect事件似乎就会无序地触发。
在整个应用程序中只有一个静态的RAPI实例会更好吗?你还有什么其他的建议吗?谢谢。
发布于 2010-04-17 01:57:46
从逻辑上讲,RAPI是PC和设备之间的单一连接。让你的应用程序支持多个连接是没有意义的。我会做一个Singleton class,它包装了RAPI调用,并为你做了所有的调用,这样每个需要与设备对话的人都会通过这个类。
https://stackoverflow.com/questions/2654618
复制相似问题