C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でイベントをサブスクライブするにはどうすればよいですか?C#で1つのイベントに複数のサブスクライバーを含めることはできますか?


イベントを使用すると、クラスまたはオブジェクトは、関心のあることが発生したときに他のクラスまたはオブジェクトに通知できます。

イベントを発生させるクラスはパブリッシャーと呼ばれ、イベントを処理するクラスはサブスクライバーと呼ばれます。

イベントで

イベントには複数のサブスクライバーを含めることができます。サブスクライバーは、複数のパブリッシャーからの複数のイベントを処理できます。

サブスクライバーがいないイベントは発生しません。

パブリッシャーは、イベントがいつ発生するかを決定します。サブスクライバーは、イベントに応じて実行するアクションを決定します。

class Program {
   static void Main() {
      var video = new MP4() { Title = "Eminem" };
      var videoEncoder = new MP4EncoderNew();
      var mailService = new MailService();
      var messageService = new MessageService();
      videoEncoder.mp4Encoded += mailService.onVideoEncoded;
      videoEncoder.mp4Encoded += messageService.onVideoEncoded;
      videoEncoder.Encode(video);
      Console.ReadKey();
   }
}
public class MP4 {
   public string Title { get; set; }
}
public class MP4Args : EventArgs {
   public MP4 mp4 { get; set; }
}
public class MP4EncoderNew {
   public EventHandler mp4Encoded;
   public void Encode(MP4 video) {
      Console.WriteLine("Encoding MP4");
      Thread.Sleep(3000);
      OnVideoEncoded(video);
   }
   protected void OnVideoEncoded(MP4 video) {
      if (mp4Encoded != null) {
         mp4Encoded(this, new MP4Args() { mp4 = video });
      }
   }
}
//Subscriber 1
public class MailService {
   public void onVideoEncoded(object source, MP4Args e) {
      Console.WriteLine("Mail Service:,Sending an email {0}", e.mp4.Title);
   }
}
//Subscriber 2
public class MessageService {
   public void onVideoEncoded(object source, MP4Args e) {
      Console.WriteLine("Message Service:,Sending an Message {0}", e.mp4.Title);
   }
}

出力

Encoding MP4
Mail Service:,Sending an email Eminem
Message Service:,Sending an Message Eminem

  1. matplotlibとPythonを使用して、複数のプロットを同じ図にプロットするにはどうすればよいですか?

    Matplotlibは、データの視覚化に使用される人気のあるPythonパッケージです。 データを視覚化することは、実際に数値を調べたり複雑な計算を実行したりすることなく、データで何が起こっているのかを理解するのに役立つため、重要なステップです。 定量的な洞察を聴衆に効果的に伝えるのに役立ちます。 Matplotlibは、データを使用して2次元プロットを作成するために使用されます。 Pythonアプリケーションにプロットを埋め込むのに役立つオブジェクト指向APIが付属しています。 Matplotlibは、IPythonシェル、Jupyterノートブック、SpyderIDEなどで使用できま

  2. 複数のGmailアカウントを管理し、1か所でメールをチェックする方法

    私たちの多くにとって、Gmailは私たちのオンライン体験全体をつなぐ支点です。ユニバーサルメールプロバイダーは、シングルサインオン(SSO)アクセスを管理し、重要なアラートを通知し、チーム会議アプリと同期し、仕事用ドメインに簡単に接続できます。このような多様性を考えると、日常の活動を管理するために複数のGmailアカウントを持っていることは非常に一般的です。 Gmailアカウントごとに個別のパスワードを覚えておく必要はないことを知っておくことが重要です。 1つの場所から複数のGmailアカウントにアクセスし、すべてのメールを同時に確認する方法はいくつかあります。 1。 Gmailサインインア