私はC#と確かにOOPの概念を新しくしています..私の質問の愚かさを許してください。イベントハンドラを使って作業する - ただし必ずしもそうではありません。(どうすればいいですか...)
私は通信したいシステムを持っています。関連する応答で呼び出すことができるいくつかのコマンドがあります。 (通信はTCP/IPまたはシリアル経由で行われます)(複数のトランスポートメカニズムを使用できるように、SendMessageとのインターフェイスを実装しました)
それぞれのコマンドにメソッドを作成して公開します。デバイスはまた、私が動作したいと思う 'ブロードキャスト'メッセージを言うことができるので、これはうまく動作するイベントハンドラを使用していた..
現時点では、イベントハンドラで私はOKとERRORスタイルメッセージしかし理想的には、上記のメソッドからコマンドを送信してエラーをキャッチし、コマンドに基づいてブール値を返すこともできます。
誰かがこのようなことをして正しい方向に向ける方法を考えることができますか?
おかげ
デビッド
が広すぎる:イベント上がるよう
信号を同時に:
そうでなければ私は単にブロッカーとして使用する通信クラス内のメソッドを持っているでしょうあなたは現在何をしていますか?代わりに何をしたいですか?メソッドの内部では、イベントをサブスクライブすることができ、タイムアウトやイベントハンドラが呼び出されるまで実行をブロックし、それが質問であれば続行できます。 – Sinatr
私は、現在のイベントハンドラを何かからブロックすることができると思っています。そのコマンドの応答を取得するためのメソッド内のレスポンスをキャッチしてから再び有効にしますが、正しくはありません –
次にイベントハンドラを使用しないでください。別のシグナル伝達機構(例えば、 'Monitor.Pulse' /' Monitor.Wait')を提供してください。過去に私はイベントに登録していた通信クラスのヘルパーを書いて、特定の返事を待ってから帰ってきました。しかし、その後、私は「モニター」の存在を発見しました([Albahari](http://www.albahari.com/threading/part4.aspx#_Signaling_with_Wait_and_Pulse)のおかげで)、それ以来それを使用しています。 – Sinatr