Events in C#

 Example Event



namespace MyNameSpace
{
    class Program
    {
        private static event EventHandler? Metting;
        private static MettingData _Data = new();
       
        static void Main(string[] args)
        {
  
            EventRegister();
            EventAction();
            EventUnregister();

            Console.ReadKey();
        }

        //Create Data 
        private static MettingData CreateData(string org,string metTitle, string metContent)
        {
            _Data.organizing_committee = org;
            _Data.MettingSubjects = metTitle;
            _Data.MettingContents = metContent;
            return _Data;
        }

        //Event Registration
        public static void EventRegister()
        {
            Metting += Program__Metting;
        }

        // Event Going On
        public static void EventAction()
        {
            var data = CreateData("ABC Company","Year-End Meeting", "summarize work, staff assessment");
            Metting?.Invoke(data.organizing_committee, data);
        }

        // Event Stop
        public static void EventUnregister()
        {
            Metting -= Program__Metting;
        }

        private static void Program__Metting(object? sender, MettingData e)
        {
            Console.WriteLine("Meeting Start Now !");
            Console.WriteLine("\nEvent organization company: {0}", (string?)sender);
            Console.WriteLine("\nMeeting Subject: {0}\n", e.MettingSubjects);

            for (int i = 1; i <= 10; i++)
            {
                Thread.Sleep(1000); // delay time for metting
                Console.WriteLine("The meeting has been going on for {0} minute", i);
            }

            Console.WriteLine("\nContent of the meeting: {0}", e.MettingContents);
            Console.WriteLine("\nEnd Meeting !");
        }
    }

    internal class MettingData
    {
        public  string? organizing_committee { get; set; }
        public  string? MettingSubjects { get; set; } 
        public  string? MettingContents { get; set; } 
        
    }
}

Post a Comment

Previous Post Next Post