代码如下:'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();
        }
    }
}疑惑中