Wednesday 15 August 2018

Sample program for Event in C#

In this post we are going to see the sample program for event model in c#, Event uses the Delegate, it is like publisher and subscriber model.

Steps to do in publisher
1. Create a Delegate
2. Create a Event
3. Raise a Event

Steps to do in subscriber
1. Subscribe the notification through event
2. Do the operation

Syntax for Event:
1. public event delegate_name event_name;

In this program we are going to create Logger class which have event Write, Logger is publisher. Now in subscriber we have subscribe the notification through write event for two subscriber one is for ConsoleLogger another one is for FileLogger.



























Publisher:
************************
   public class Logger
    {
        public delegate void WriteHandler(string message);
        public event WriteHandler Write;

        public void WriteAll(string messaage)
        {
            Write?.Invoke(messaage);
        }

    }



Subscriber:
************************
public class ConsoleLogger
    {
        public void Info(string message)
        {
            Console.WriteLine(message);
        }
    }

    public class FileLogger
    {
        StreamWriter writer;
        FileStream fileStream;

        public FileLogger()
        {
            fileStream = new FileStream(@"E:/writer.txt", FileMode.Create);
            writer = new StreamWriter(fileStream);
        }

        public void WriteInfo(string message)
        {
            writer.WriteLine(message);
            writer.Flush();
        }

    }


Main Program
**************
    class Program
    {
        static void Main(string[] args)
        {
            ConsoleLogger clogger = new ConsoleLogger();
            FileLogger flogger = new FileLogger();

            Logger _logger = new Logger();
            _logger.Write += clogger.Info;
            _logger.Write += flogger.WriteInfo;

            _logger.WriteAll("1 statement");
            _logger.WriteAll("2 statement");

            Console.Read();
        }
    }


When we call the WriteAll Method, it is triggering an event Write, so subscribed eventhandler will execute , because of this message is write in console and as well in File

Output:
*************

ConsoleLogger




 FileLogger





From this post you can learn event model in c# with sample