GSM モデムをポーリングする DLL があります。
モデムが SMS を受信すると、DLL はコンテンツを前処理し、割り込みを介してアプリケーションに送信します。アプリケーションはデータを処理し、結果を DLL に送り返します。DLL はそれを SMS 経由で送信者に渡します。システムに 2 つのモデムがある場合、アプリケーションには dll のインスタンスが 2 つあります。
IMyModem modem1 = new MyModem(...);
IMyModem modem2 = new MyModem(...);
私は、DLL の 2 つの独立したインスタンス化がメモリ内にあると考えているため、DLL 内に必要な System.Timers.Timer は 1 つだけです。つまり、2 つの別々のコピーが互いに独立して経過します。
アプリケーション UI もモデムに影響を与える可能性があります。(結果、リクエスト分離、テスト tx など)。
UI 要求とポーリングの間の相互作用を制御するために、DLL に 2 つの静的ミューテックス (モデムごとに 1 つ) があります。タイマー経過ハンドラーおよびその他のルーチンは、インスタンス化中に通知されたように、処理しているモデムを認識しています。そのため、WaitOne() を使用する Mutex を認識しています。
私はテストしましたが、問題なく動作しているように見えますが、製品の負荷がかかるまで表示されない設計上の弱点があるのではないかと心配しています。この問題に関する「パネル」の見解をいただければ幸いです。