0

ここから先を理解するのに問題があります。SQLExpressデータベースにアクセスし、DataSetを介してそれを操作するフォームを開発しました。また、独自のプロトコルを介して他のクライアントからの更新をマルチスレッドTCPサーバーでリッスンするクラスを開発しました。

私がする必要があるのは、更新されるデータセットのインスタンスを含むフォームへのこれらの更新を取得することです。

私はここでいくつかのイベントをチェックし、ヘルプを委任しました。最初は便利に見えましたが、これらの例の多くが抱えているのと同じ問題に悩まされています両方のクラスで同様の変数を使用します。

どのクラスが「サブスクライバー」であり、どのクラスが「パブリッシャー」ですか?私はフォームプログラミングを本当に嫌い、これは完全にコマンドラインベースで行いますが、プロンプトを使用しなければならないことによるトラウマを経験する可能性があるほどコンピューターの知識がない人々のグループ向けです。

4

1 に答える 1

0

パブリッシャーは、クラスがイベントを宣言するオブジェクトです。たとえば、はイベントをDataTable公開しRowChangedます。

イベントを処理するオブジェクトはサブスクライバーです。たとえば、_tableフィールドを持つクラスは、RowChangedイベントをサブスクライブできます(もちろん、処理メソッドが存在すると仮定します)。

this._table.RowChanged += this.HandleRowChanged;

場合によっては、クラスが独自のイベントをサブスクライブすることがあります。例として、WindowsフォームのLoadイベントがあります。これは必要以上のオーバーヘッドを使用し、一部のフレームワークは、サブクラスがイベントデリゲートを作成せずに基本クラスの機能を拡張できるようにする仮想メソッドを提供します。これが、フォームのOnLoadメソッドが仮想である理由です。

于 2012-05-24T04:40:52.683 に答える