一箭工作室

大家一起来学软件开发

博客园 首页 新随笔 联系 订阅 管理
        一般一个应用就是一个进程,一个进程必须有一个主线程。有时为了最大限度提高应用性能和充分发挥硬件的性能,可以通过多线程来解决这个问题。

.NET已经提供非常好的框架,开发人员只需指定好线程的主入口,即一个对象的方法即可。不过,这个方法通过ThreadStartParameterizedThreadStart委托来实现。代码事例如下:

class Program

    {

static void Main(string[] args)

        {

            //启动一个线程

            ThreadStart threadStart1 = new ThreadStart(Worker.DoWork);

            Thread newThread = new Thread(threadStart1);

            newThread.Start();

 

            //通过参数化线程委托启动一个线程

            ParameterizedThreadStart parameterizedThreadStart = new ParameterizedThreadStart(Worker.DoWork);

            Thread thread = new Thread(parameterizedThreadStart);

            thread.Start("Hello World!");

        }

       }

 

    public class Worker

    {

        public static void DoWork()

        {

            try

            {

                Thread.Sleep(int.MaxValue);

                Console.WriteLine("Static thread procedure.");

            }

            catch(Exception ex)

            {

                Console.WriteLine("Thread Exception is {0}",ex);

            }

        }

        public string Data;

        public void DoWorkByParameterized()

        {

            Console.WriteLine("Instance thread procedure. Data={0}", Data);

        }

 

        public static void DoWork(object data)

        {

            Console.WriteLine("Static thread procedure. Data='{0}'",

                data);

        }

 

        //因为这个数据成员要被多线程使用。

        private volatile bool shouldStop;

        // 当线程启动时,被调用。这个方法相当于主线程的Main入口

        public void DoWorkByVariable()

        {

            while (!shouldStop)

            {

                Console.WriteLine("worker thread: working...");

            }

            Console.WriteLine("worker thread: terminating gracefully.");

        }

 

        public void RequestStop()

        {

            shouldStop = true;

       }

    }

 

ThreadStartParameterizedThreadStart都是委托类型,最大区别在于ThreadStart不支持带参启动,为实现这个目标,可以通过对象属性和构造函函数解决。事例代码如下:

 

 

posted on 2007-02-25 21:12  一箭  阅读(197)  评论(0)    收藏  举报