目前应该是有很多小伙伴对于C#多线程循环输出方面的信息比较感兴趣,现在小编就收集了一些与C#多线程循环输出相关的信息来分享给大家,感兴趣的小伙伴可以接着往下看,希望会帮助到你哦。
用一个Monitor锁定就OK了,下面是完整代码,你可以直接复制过去运行的class Program { private event EventHandler OnNumberClear; public List<Thread> ThreadCollection = new List<Thread>(); public int count = 0; private void run() { while (true) { Monitor.Enter(this);//锁定。
保持同步 Console.WriteLine("线程{0}正在运行{1}", Thread.CurrentThread.Name, count); if (count == 50) { OnNumberClear(this, new EventArgs());//引发完成事件 } count += 1; Monitor.Exit(this);//取消锁定 Thread.Sleep(5); } } public Program() { for (int i = 0; i < 10; i++) { Thread mythread = new Thread(run); mythread.Name = string.Format("{0}", i); ThreadCollection.Add(mythread); } OnNumberClear += new EventHandler(Program_OnNumberClear); } void Program_OnNumberClear(object sender, EventArgs e) { Console.WriteLine("执行完了,停止了所有线程的执行
"); foreach (Thread thread in ThreadCollection) { thread.Abort(); } } public void Action() { foreach (Thread thread in ThreadCollection) { thread.Start(); } } static void Main(string[] args) { Program program = new Program(); program.Action(); } }
本文到此结束,希望对大家有所帮助。