1

アプリケーションの多くの場所に、次のようなコードがあります。

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 オブジェクトの新規作成を開始すると、接続/切断イベントが順不同で発生するように見えます。

アプリ全体で RAPI の静的インスタンスを 1 つだけ持つ方がうまくいくでしょうか? 他にアドバイスはありますか?ありがとう。

4

1 に答える 1

1

論理的には、RAPI は PC とデバイス間の単一の接続です。アプリが複数の接続をサポートすることさえ意味がありません。RAPI 呼び出しをまとめてすべての呼び出しを行うシングルトン クラスを作成し、デバイスと通信する必要があるすべてのユーザーがその 1 つのクラスを通過できるようにします

于 2010-04-16T17:57:46.067 に答える