Пример #1
0
        public static void Run()
        {
            OneThread thread1 = new OneThread("Test for One Thread");

            TwoThreads thread2 = new TwoThreads("Thread 2.1", "Thread 2.2");
        }
Пример #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("-- ArrayList --");
            ArrayListDemo AlDemo = new ArrayListDemo();

            AlDemo.AddNew();
            AlDemo.Display();
            AlDemo.Sort();
            Console.WriteLine("Sorted List.");
            AlDemo.Display();

            Console.WriteLine("-- Stack --");
            StackDemo st = new StackDemo();

            QueueDemo Q = new QueueDemo();

            Console.WriteLine("-- Generic List --");
            MyGeneric <string> gen = new MyGeneric <string>();

            gen.AddItem("abc");
            gen.AddItem("xyz");
            Console.WriteLine(gen.GetItem());
            Console.WriteLine(gen.GetItem(1));

            Console.WriteLine("-- Exceptions --");
            //UserDefinedException uexp = new UserDefinedException();
            try
            {
                UserDefinedException.ThrowUserDefinedException();
            }
            catch (UserDefinedException ex)
            {
                Console.WriteLine("Exception : " + ex.Message);
            }
            try
            {
                UserDefinedException.ThrowUserDefinedException("New Message");
            }
            catch (UserDefinedException ex)
            {
                Console.WriteLine("Exception : " + ex.Message);
            }

            Console.WriteLine("\n-- Format Deemo --");
            FormattingDemo.Display();

            DisplayXMLContents();


            MyList list = new MyList();

            Console.WriteLine(list.ToString());

            Console.WriteLine("-- AbstractClass static methos--");
            Console.WriteLine(AbstractClass.Display("Hello"));

            Console.WriteLine("-- Yield Example --");
            foreach (int i in YieldExample.Power(2, 8))
            {
                Console.Write("{0} ", i);
            }

            //// Single Thread Example.
            Console.WriteLine("\n\nSingle Thread Example.\n");
            ThreadDemo thread1 = new ThreadDemo();
            ThreadDemo thread2 = new ThreadDemo("FromMain");

            Console.WriteLine("Single Thread Ended");

            //// Single Thread Example.
            Console.WriteLine("\n\nTwo Threads Example.\n");
            TwoThreads twoThreads = new TwoThreads("Child#1", "Child#2");

            Console.WriteLine("Two Threads Ended");
            Console.ReadKey();
        }
Пример #3
0
        static void Main(string[] args)
        {
            //1. Определите и выведите на консоль/в файл все запущенные процессы:id, имя, приоритет,
            //время запуска, текущее состояние, сколько всего времени использовал процессор и т.д.
            using (StreamWriter sw = new StreamWriter("processes.txt"))
            {
                Process[] allProcesses = Process.GetProcesses(); //получение всех процессов
                foreach (Process p in allProcesses)              //при запуске приложения ОС создает для него процесс,
                {                                                //которому выделяется определенное адр пр-во в памяти
                    sw.WriteLine("Имя компьютера: " + p.MachineName);
                    sw.WriteLine("id: " + p.Id);
                    sw.WriteLine("Имя: " + p.ProcessName);
                    sw.WriteLine("Приоритет: " + p.BasePriority);
                    //sw.WriteLine("Время запуска: " + p.StartTime);
                    sw.WriteLine("Ответ пользовательского интерфейса: " + p.Responding);
                    sw.WriteLine("Объём памяти: " + p.WorkingSet64);
                    sw.WriteLine("Общее время: " + p.TotalProcessorTime);
                    sw.WriteLine();
                }
            }
            //2. Исследуйте текущий домен вашего приложения: имя, детали конфигурации, все сборки, загруженные в домен.
            //При запуске приложения, написанного на C#, операционная система создает процесс, а среда CLR создает внутри этого процесса
            //логический контейнер, который называется доменом приложения и внутри которого работает запущенное приложение.
            AppDomain domain = AppDomain.CurrentDomain;

            Console.WriteLine("Текущий домен");
            Console.WriteLine("Имя: " + domain.FriendlyName);
            Console.WriteLine("Детали конфигурации: " + domain.SetupInformation);
            Console.WriteLine("Сборки, загруженные в домен:");
            Assembly[] assemblies = domain.GetAssemblies();
            foreach (Assembly a in assemblies)
            {
                Console.WriteLine(a.GetName().Name);
            }
            //Создайте новый домен.
            AppDomain newDomain = AppDomain.CreateDomain("New");

            newDomain.Load(new AssemblyName("ConsoleApp1"));
            //Загрузите туда сборку.
            Console.WriteLine("Имя нового домена: " + newDomain.FriendlyName + "\nСборки нового домена:");
            foreach (Assembly a in newDomain.GetAssemblies())
            {
                Console.WriteLine(a.GetName().Name);
            }
            //Выгрузите домен.
            AppDomain.Unload(newDomain);
            //Console.WriteLine("\nPress any key\n");
            //Console.ReadKey();


            //3. Создайте в отдельном потоке следующую задачу расчета (можно сделать sleep для задержки)
            //и записи в файл и на консоль простых чисел от 1 до n(задает пользователь).
            //Вызовите методы управления потоком(запуск, приостановка, возобновление и тд.)
            //Во время выполнения выведите информацию о статусе потока, имени, приоритете.
            Console.WriteLine("\nПоток");                         //поток - используемый внутри процесса путь выполнения
            Thread thread = new Thread(ToWriteNum);               //процесс содержит мин один поток - главный

            thread.Start();                                       //из главного - вторичные
            thread.Name = "MyThread";
            Thread.Sleep(1000);
            thread.Suspend();
            Console.WriteLine("Имя: " + thread.Name);
            Thread.Sleep(100);
            Console.WriteLine("Статус: " + thread.ThreadState);
            Thread.Sleep(100);
            Console.WriteLine("Приоритет: " + thread.Priority);
            Thread.Sleep(1000);
            thread.Resume();
            Thread.Sleep(3000);



            //4. Создайте два потока.Первый выводит четные числа, второй нечетные до n и
            //записывают их в общий файл и на консоль.Скорость расчета чисел у потоков – разная.
            //a.Поменяйте приоритет одного из потоков.
            //b.Используя средства синхронизации организуйте работу потоков, таким образом, чтобы
            //i. выводились сначала четные, потом нечетные числа
            Console.WriteLine("Сначала чётные");
            TwoThreads.Consistently();
            Thread.Sleep(4000);
            Console.WriteLine("\nНажмите кнопку\n");
            Console.ReadKey();
            //ii. последовательно выводились одно четное, другое нечетное.
            Console.WriteLine("Чередуясь:");
            TwoThreads.OneByOne();

            Thread.Sleep(7000);
            Console.WriteLine("\nНажмите кнопку\n");
            Console.ReadKey();


            //5. Придумайте и реализуйте повторяющуюся задачу на основе класса Timer
            TimerCallback tm = new TimerCallback(Count);  //метод обратного вызова
                                                          //таймер - запускает опред действия по истечению некоторого периода времени
            Timer timer = new Timer(tm, null, 500, 1000); //метод, объект для передачи в метод, мс через кот таймер запускается, интервал между вызовами метода

            Thread.Sleep(5000);
            Console.WriteLine("Времени прошло...");
            timer.Dispose();
            Process music = Process.Start("clock.mp3");

            Console.ReadKey();
            void Count(object obj)
            {
                Console.WriteLine($"Сейчас {DateTime.Now.Hour}:{DateTime.Now.Minute}:{DateTime.Now.Second}");
            }
        }