多线程Thread 执行的方法(有参数与无参数)

2020-01-02  本文已影响0人  Andy的雨后

我们看到Thread 的源文件

imga1

可以看出是常用的执行方法有ParameterizedThreadStart、与ThreadStart

so,我们只需要了解ParameterizedThreadStart与ThreadStart区别就可以掌握了

下面看例子:

1、ThreadStart 这个委托定义为 无参 void ThreadStart()

ThreadStart threadStart=new ThreadStart(Calculate);

Thread thread=new Thread(threadStart);

thread.Start();

public void Calculate()

  {

 double Diameter=0.5;

 Console.Write("The Area Of Circle with a Diameter of {0} is {1}"Diameter,Diameter*Math.PI);

  }

2、ParameterThreadStart的定义为void ParameterizedThreadStart(object state),使用这个这个委托定义的线程的启动函数可以接受一个输入参数,具体例子如下 :

public static bool ControlSpeekingHornNew(string TowerCode, string even_type, string ip, int port, int isOpen, string buf)

{

            Thread_HornModel model = new Thread_HornModel();

            model.TowerCode = TowerCode;

            model.ip = ip;

            model.port = port;

            model.even_type = even_type;

            model.isOpen = isOpen;

            model.buf = buf;

            Thread _thread = new Thread(new ParameterizedThreadStart(ThreadControlSpeekingHornNew));

            _thread.Start(model);

            return true;

}

// 注意这里只能使用object类型,不能使用具体的 Thread_HornModel类型,传参进去再进行转换

public static void ThreadControlSpeekingHornNew(object resons)

        {

            if(resons is Thread_HornModel)

            {

                Thread_HornModel _data = (Thread_HornModel)(resons);

                string TowerCode = _data.TowerCode;

                string even_type = _data.even_type;

                string ip = _data.ip;

                int port = _data.port;

                int isOpen = _data.isOpen;

                string buf = _data.buf

              // do something

            }

        }

public class Thread_HornModel

    {

        public string TowerCode { get; set; }

        public string even_type { get; set; }

        public string ip { get; set; }

        public int port { get; set; }

        public int isOpen { get; set; }

        public string buf { get; set; }

    }

上一篇 下一篇

猜你喜欢

热点阅读