C#多线程与参数传递

在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart所代表或者说指向的函数。 

1、无参数

    public class Alpha
    {
        public void Beta()
        {
            int i = 0;
            while (i < 20)
            {
                Console.WriteLine(i);
                i++;
            }
        }
    }

    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Alpha oAlpha = new Alpha();
            Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));
            oThread.Start();

            for (int m = 0; m < 20; m++)
            {
                Console.WriteLine("main running " + m);
            }
        }
    }
2、有参数

看了网上一堆关于线程参数的,觉得有些比较啰嗦,在此整理一个比较简易的方法。

使用匿名代理,然后在代理里面调用方法。

    public class Alpha
    {
        public void Beta(string name)
        {
            int i = 0;
            while (i < 100)
            {
                Console.WriteLine(name + "  " + i.ToString());
                i++;
            }
        }
    }

    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Thread oThread = new Thread(new ThreadStart(delegate()
            {
                Alpha oAlpha = new Alpha();
                oAlpha.Beta("tanyixiu");
            }));
            oThread.Start();

            for (int m = 0; m < 20; m++)
            {
                Console.WriteLine("main running " + m);
            }
        }
    }

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