RAPIアプローチ:1つのWinFormsアプリ全体の静的インスタンスvs作成、接続、処分
-
27-09-2019 - |
質問
アプリケーションの多くの場所では、次のようなコードがあります。
using(RAPI rapi = new RAPI())
{
bool connected = TryToConnectWithTimeout(rapi);
if(connected)
DoSomethingWithRapi(rapi);
}
これはこれまでのところうまくいきました。一度に1つ以上のRapiインスタンスがありません。今まで:
しかし今、私たちはRapiでのConnectイベントを聞きたいと思っています。私たちはこのようにやっています:
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つだけ持っている方が良いでしょうか?他にアドバイスはありますか?ありがとう。
解決
論理的には、RapiはPCとデバイスの間の単一の接続です。アプリが複数の接続をサポートすることも意味がありません。私は作ります シングルトンクラス これにより、Rapiの呼び出しが締めくくられ、デバイスと話をする必要があるすべての人がその1つのクラスを通過するように、すべての電話が必要になります。
所属していません StackOverflow