public void OnPublishData(PublishDataEventArgs p)
    {
        EventHandler <PublishDataEventArgs> _PublishData = PublishData;

        if (_PublishData != null)
        {
            _PublishData(this, p);
        }
    }
    static void Main(string[] args)
    {
        PublishDataEventArgs e = new PublishDataEventArgs();

        e.Message = "Hello from Subscriber";
        Publisher         p    = new Publisher();
        List <Subscriber> subs = GetSubscribers();

        p.PublishData += new EventHandler <PublishDataEventArgs>(subs[0].PrintMessage);
        p.PublishData += new EventHandler <PublishDataEventArgs>(subs[1].PrintMessage);
        p.PublishData += new EventHandler <PublishDataEventArgs>(subs[2].PrintMessage);
        p.PublishData += new EventHandler <PublishDataEventArgs>(subs[3].PrintMessage);
        p.OnPublishData(e);
        Console.ReadKey();
    }
 public void PrintMessage(object sender, PublishDataEventArgs e)
 {
     Console.WriteLine("Data has arrived for IP " + IP + " Port " + Port + " message " + e.Message);
 }