2011-07-07 12 views
0

私のプログラムでは、クレジットカードをスワイプする時間が表示されるウィンドウがあります。このウィンドウは、クレジットカードがスワイプされるか、その他のエラーが発生するまで待機します。現在、待機ウィンドウは、内部的にカードリーダークラスを作成しており、カードリーダークラスの代理人/コールバックメソッドを使用して、カード上のデータがいつ利用可能か、その他のエラーが発生したことを知ります。クレジットカードリーダーからのデカップリングクレジットカードの待ち受けウィンドウ

私はCardReaderの戦略パターンを実装しています。

また、CardReaderの作成/不確定コードをウィンドウコードから切り離したいと思います。あなたは同じことをするためのヒントを教えてください。

CardReaderの戦略パターンクラスを設計する前に、あなたのコメントを読んでいます。

おかげ

+0

で動作するように多くの私たちに与えていない

DCardArrived _evnt = OnCardArrived; /*presumably declared event*/ Delegate[] _iList; DCardArrived _Invoker; if (_evnt != null) { _iList = _evnt.GetInvocationList(); for (int i = 0; i < _iList.Length; i++) { //You could also use BeginInvoke _Invoker = (DCardArrived)_iList[i]; _Invoker.Invoke(this/*Sender*/,CardData/*class that inherits EventArgs containing the data either informing just the window to close or not or with the data for further processing*/); } } 

読み取りは、単一のリーダーからのデータを受信するために複数のウィンドウを有効にするには、このようなものを作るに行われているリーダークラス内

あなたは単に工場のパターンを探していませんか? – CodingBarfield

答えて

1

が待っているウィンドウコンストラクタを作るOnCardReadEvent待ちウィンドウを登録し、読者のクラスへの参照が必要です。イベントが受信されると、リーダークラス内の関数を呼び出してチェックします。必要に応じて、待機中のウィンドウを表示し続けるか閉じることができます。 OnCardReadEventからウィンドウのクローズを解除します。

OnCardReadEventがない場合は、それを作成してください。あなたは:)

関連する問題