AutoResetEvent прокомментируйте код - C#
Формулировка задачи:
Написал программу в которой 2 потока используют общий ресурс-консоль. Программа поочередно выводит Тик так.
Как использовать одно события что бы было так же?
using System; using System.Threading; class Tik { AutoResetEvent TakOn; AutoResetEvent TikOn; public Thread thrd; public Tik(string name, AutoResetEvent takon, AutoResetEvent tikon) { TakOn = takon; TikOn = tikon; thrd = new Thread(this.Run); thrd.Name = name; thrd.Start(); } public void Run() { for (int i = 0; i < 25; i++) { Console.Write("Tuk "); TakOn.Set(); TikOn.WaitOne(); } } } class Tak { AutoResetEvent TikOn; AutoResetEvent TakOn; public Thread thrd; public Tak(string name, AutoResetEvent tikon, AutoResetEvent takon) { TikOn = tikon; TakOn = takon; thrd = new Thread(this.Run); thrd.Name = name; thrd.Start(); } public void Run() { for (int i = 0; i < 25; i++) { Thread.Sleep(2500); Console.WriteLine("Taaaaaaaak "); TikOn.Set(); TakOn.WaitOne(); } } } class Demo { static void Main() { AutoResetEvent arrTik = new AutoResetEvent(false); AutoResetEvent arrTaak = new AutoResetEvent(false); Tik tk = new Tik("Tuk", arrTaak, arrTik); Tak tak = new Tak("Tak", arrTik, arrTaak); tk.thrd.Join(); tak.thrd.Join(); Console.ReadKey(); }
Решение задачи: «AutoResetEvent прокомментируйте код»
textual
Листинг программы
using System; using System.Threading; namespace ConsoleApplication12 { class Program { static void Main(string[] args) { var tik = new TikTaker("tik"); var tak = new TikTaker("tak"); tik.Start(); tak.Start(); Console.ReadKey(true); tik.Stop(); tak.Stop(); Console.WriteLine("Stopped"); Console.ReadKey(true); } } class TikTaker { static readonly AutoResetEvent ARE = new AutoResetEvent(true); static readonly Random r = new Random(); public string Message { get; set; } private bool _work = true; public TikTaker(string message) { Message = message; } public void Start() { var thread = new Thread(() => { while (_work) { ARE.WaitOne(); Console.WriteLine(Message); Thread.Sleep(r.Next(200, 400)); ARE.Set(); } }); thread.Start(); } public void Stop() { _work = false; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д