예제 #1
0
        static void Main(string[] args)
        {
            PrimeGenerator gen = new PrimeGenerator();

            PrimeGenerator.PrimeDelegate callprint = PrintPrime;
            gen.AddDelegate(callprint);

            PrimeGenerator.PrimeDelegate callsum = SumPrime;
            gen.AddDelegate(callsum);

            gen.Run(10);
            Console.WriteLine();
            Console.WriteLine(Sum);

            gen.RemoveDelegate(callsum);
            gen.Run(15);
        }
예제 #2
0
        /// <summary>
        /// 프로그램 메인
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            PrimeGenerator gen = new PrimeGenerator();

            /// 대리자함수로 등록하는 과정. 이벤트가 발생할때, 해당 함수가 실행될 것임.
            PrimeGenerator.PrimeDelegate callprint = PrintPrime;
            gen.AddDelegate(callprint);
            PrimeGenerator.PrimeDelegate callsum = SumPrime;
            gen.AddDelegate(callsum);

            // 사용자의 콘솔입력을 받아서 실행됨. 숫자가 아닌 잘못된 값을 받았을때 계속 Loop됨.
            //Console.WriteLine("범위값을 설정하여 주십시오.");
            string input = string.Empty;
            int    num;

            while (int.TryParse(input, out num) == false)
            {
                Console.WriteLine("범위값을 설정하여 주십시오.");
                input = Console.ReadLine();
            }

            Console.WriteLine("0~{0} 사이의 소수들을 구합니다.", num);
            gen.Run(num);

            Console.WriteLine();
            Console.WriteLine("모든 소스들의 합은 {0} 입니다.", Sum);

            // SumPrime 대리자 함수등록를 해지합니다. 더이상 이 이벤트발생시, 해당함수가 실행되지 않습니다. PrintPrime 대리자는 아직 남아있어 그대로 작동합니다.
            gen.RemoveDelegate(callsum);
            gen.Run(99);
            Console.WriteLine();
            Console.Write("모든 소스들의 합은 ");
            Console.WriteLine("{0} 입니다.", Sum);

            // 아무키나 입력하게 되면, 프로그램을 종료합니다.
            Console.WriteLine();
            Console.WriteLine("프로그램을 끝냅니다.");
            Console.ReadLine();
        }