3 つのプロジェクトを含むソリューションがあります。1 つのプロジェクトが非同期通信を処理します。コールバックが完了すると、SomethingCompleted イベントが発生します。同じソリューション内の別のプロジェクトからこのイベントをサブスクライブするにはどうすればよいですか?
受信側プロジェクトにイベント ハンドラーをビルドしましたが、送信側プロジェクトにイベントが表示されません。
3 つのプロジェクトを含むソリューションがあります。1 つのプロジェクトが非同期通信を処理します。コールバックが完了すると、SomethingCompleted イベントが発生します。同じソリューション内の別のプロジェクトからこのイベントをサブスクライブするにはどうすればよいですか?
受信側プロジェクトにイベント ハンドラーをビルドしましたが、送信側プロジェクトにイベントが表示されません。
internal
イベント自体がアクセス修飾子で宣言されていない限り、別のアセンブリで発生するイベントについて特別なことは何もありません。公開されていることを確認します。
私が言いたいことの例を挙げると、あなたはサブスクライブすることについてよく考えていないと思いますが、Button.Click
それButton
は別のアセンブリに含まれていますよね?
イベントは、それを定義するクラスで public として宣言する必要があります。
public class Something
{
public event EventHandler SomethingCompleted;
}
その後、他のイベントと同様にサブスクライブできます。
Something s = ...;
s.SomethingCompleted += SomeEventHandler;
イベント ハンドラーを登録するには、イベントを発生させるクラスへの参照が必要です。
それができたら、他のイベント ハンドラーを登録するのと同じように完了します。
foo.SomethingCompleted += (sender, e) => this.DoSomething();