C# 多线程学习 2018-07-05

C# 多线程

  • 使用背景:因为Webservice 调用公司邮件报警接口导致后续代码执行不了(提示网络超时),于是开一个线程
  • C#中,线程入口是通过ThreadStart代理(delegate)来提供的,相当于一个函数指针;指向线程要执行的函数,当调用Thread.Start()方法后,线程就开始执行ThreadStart 所代表或者说指向的函数。
  • 使用多线程之前要先创建一个线程。和新建一个类一样,没什么区别
//使用之前需要引用
using System;
using System.Threading;

namespace ESOP
{
    public class Tands
    {

        public static string  main(string  userid)
        {
            Sent Sentd = new Sent();
            Thread oThread = new Thread(new ParameterizedThreadStart(Sentd.SendEmail));
            oThread.Start(userid);
            return null;
        }
    }
public class Sent
    {
        public void SendEmail(object userId)()
        {
          //方法,业务逻辑
         }
    }

}
我们如果定义不带参数的线程,可以用ThreadStart,带一个参数的用ParameterizedThreadStart。带多个参数的用另外的方法
  • 由于ParameterizedThreadStart要求参数类型必须为object,所以定义的方法SendEmail形参类型必须为object。
  • 由于Thread默认只提供了这两种构造函数,如果需要传递多个参数,我们可以自己将参数作为类的属性。定义类的对象时候实例化这个属性,然后进行操作参考文章。
    参考文章

你可能感兴趣的:(C# 多线程学习 2018-07-05)