C# 多线程 参数传递

反正本人看技术从来不记的

上次用多线程知道如何传递参数,这次用的时候又忘了。照例上GOOGLE查资料

结果网上讲了一大堆乱七八糟的东西

什么构造函数传递,线程池传递之类的

哎...

我不过是想传个参数而已嘛,何必呢~

下面是我的源代码(大部分从网上copy过来的,谢谢博主)


没有注释。

class ThreadDemo { private Thread[] threads; private int thrs = 10;//线程数量 private ArrayList stringList; private event EventHandler OnNumberClear;//数据删除完引发的事件 public ThreadDemo(int number) { stringList = new ArrayList(); for (int i = 0; i < number; i++) { stringList.Add(i.ToString()); } threads = new Thread[thrs]; for (int i = 0; i < thrs; i++) { threads[i] = new Thread(new ParameterizedThreadStart(run)); threads[i].Name = "线程:" + (i + 1); } OnNumberClear += new EventHandler(ThreadDemo_OnNumberClear); } public void Action() { for (int i = 0; i < thrs; i++) { threads[i].Start((object)"Prince"); } } //注意参数一定要是 object 类型。多参数的话可以考虑用 struct类型 public void run(object para) { string stringValue = null; while (true) { Monitor.Enter(this); stringValue = (string)stringList[0]; Console.WriteLine(Thread.CurrentThread.Name + "删除了:" + para + " === " + stringValue); stringList.RemoveAt(0); if (stringList.Count == 0) { OnNumberClear(null, null); } Monitor.Exit(this); Thread.Sleep(2000); } } void ThreadDemo_OnNumberClear(object sender, EventArgs e) { Console.WriteLine("执行完所有的线程"); for (int i = 0; i < thrs; i++) threads[i].Abort(); } }

你可能感兴趣的:(C# 多线程 参数传递)