2

3 つのプロジェクトを含むソリューションがあります。1 つのプロジェクトが非同期通信を処理します。コールバックが完了すると、SomethingCompleted イベントが発生します。同じソリューション内の別のプロジェクトからこのイベントをサブスクライブするにはどうすればよいですか?

受信側プロジェクトにイベント ハンドラーをビルドしましたが、送信側プロジェクトにイベントが表示されません。

4

3 に答える 3

7

internalイベント自体がアクセス修飾子で宣言されていない限り、別のアセンブリで発生するイベントについて特別なことは何もありません。公開されていることを確認します。

私が言いたいことの例を挙げると、あなたはサブスクライブすることについてよく考えていないと思いますが、Button.ClickそれButtonは別のアセンブリに含まれていますよね?

于 2010-01-18T22:08:56.327 に答える
2

イベントは、それを定義するクラスで public として宣言する必要があります。

public class Something
{
  public event EventHandler SomethingCompleted;
}

その後、他のイベントと同様にサブスクライブできます。

Something s = ...;
s.SomethingCompleted += SomeEventHandler;
于 2010-01-18T22:09:35.980 に答える
0

イベント ハンドラーを登録するには、イベントを発生させるクラスへの参照が必要です。

それができたら、他のイベント ハンドラーを登録するのと同じように完了します。

foo.SomethingCompleted += (sender, e) => this.DoSomething();
于 2010-01-18T22:09:08.930 に答える