代码如下:'using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;namespace Event1
{
class Program
{
private Thread thread1, thread2, thread3;
private ArrayList stringList;
private event EventHandler AllCleared;
private int i = 0;
static void Main(string[] args)
{
Program p1 = new Program();
p1.action();
} public Program()
{
Random rnd = new Random(10000);
stringList = new ArrayList(100);
for (int i = 0; i < 100; i++)
{
stringList.Add(rnd.Next().ToString());
}
thread1 = new Thread(new ThreadStart(run));
thread1.Name = "thread1";
thread2 = new Thread(new ThreadStart(run));
thread2.Name = "thread2";
thread3 = new Thread(new ThreadStart(run2));
thread3.Name = "[adder]";
AllCleared += new EventHandler(Program_AllCleared);
} public void action()
{
thread1.Start();
thread2.Start();
thread3.Start();
} void Program_AllCleared(object sender, EventArgs e)
{
thread1.Abort();
thread2.Abort();
thread3.Abort();
Console.WriteLine("All string were removed from list.");
} /// <summary>
/// 操作的方法
/// </summary>
private void run()
{
string stringValue = null;
//for (; ; )
//{
Monitor.Enter(this);
stringValue = stringList[0] as string;
Console.WriteLine("线程:{0}删除了{1}", Thread.CurrentThread.Name, stringValue);
stringList.RemoveAt(0);
if (stringList.Count == 0)
{
AllCleared(this, new EventArgs());
}
Monitor.Exit(this);
Thread.Sleep(100);
run();
//}
} private void run2()
{
stringList.Add((i++).ToString());
Console.WriteLine("Thread:{0} Add {1} to stringList.", Thread.CurrentThread.Name, i);
Thread.Sleep(2000);
run2();
}
}
}疑惑中
using System.Collections;
using System.Collections.Generic;
using System.Threading;namespace Event1
{
class Program
{
private Thread thread1, thread2, thread3;
private ArrayList stringList;
private event EventHandler AllCleared;
private int i = 0;
static void Main(string[] args)
{
Program p1 = new Program();
p1.action();
} public Program()
{
Random rnd = new Random(10000);
stringList = new ArrayList(100);
for (int i = 0; i < 100; i++)
{
stringList.Add(rnd.Next().ToString());
}
thread1 = new Thread(new ThreadStart(run));
thread1.Name = "thread1";
thread2 = new Thread(new ThreadStart(run));
thread2.Name = "thread2";
thread3 = new Thread(new ThreadStart(run2));
thread3.Name = "[adder]";
AllCleared += new EventHandler(Program_AllCleared);
} public void action()
{
thread1.Start();
thread2.Start();
thread3.Start();
} void Program_AllCleared(object sender, EventArgs e)
{
thread1.Abort();
thread2.Abort();
thread3.Abort();
Console.WriteLine("All string were removed from list.");
} /// <summary>
/// 操作的方法
/// </summary>
private void run()
{
string stringValue = null;
//for (; ; )
//{
Monitor.Enter(this);
stringValue = stringList[0] as string;
Console.WriteLine("线程:{0}删除了{1}", Thread.CurrentThread.Name, stringValue);
stringList.RemoveAt(0);
if (stringList.Count == 0)
{
AllCleared(this, new EventArgs());
}
Monitor.Exit(this);
Thread.Sleep(100);
run();
//}
} private void run2()
{
stringList.Add((i++).ToString());
Console.WriteLine("Thread:{0} Add {1} to stringList.", Thread.CurrentThread.Name, i);
Thread.Sleep(2000);
run2();
}
}
}疑惑中
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货