C#中线程的开启方式2-通过Thread类

通过Thread类开启线程

普通的静态方法

class Program{
    static void DownloadFile()
    {
        //通过CurrentThread.ManagedThreadId获取当前的线程ID
        Console.WriteLine("开始下载:"+Thread.CurrentThread.ManagedThreadId);
        Thread.Sleep(2000);
        Console.WriteLine("下载完成");
    }
    static void Main()
    {
        Thread t = new Thread(DownloadFile);//创建出来Thread对象,这个线程并没有启动
        t.Start();//开始执行线程
        Console.WriteLine("Main");
    }
}

//输出为:
//Main
//开始下载:9
//下载完成

利用Lambda表达式

class Program{
    static void Main()
    {
        Thread t = new Thread(()=>
        {
            Console.WriteLine("开始下载:"+Thread.CurrentThread.ManagedThreadId);
            Thread.Sleep(2000);
            Console.WriteLine("下载完成");
        });
        t.Start();
    }
}
//输出为:
//开始下载10
//下载完成

当传递的方法有参数时

参数类型必须是object类型的,object类型可以表示任何类型

一种传递参数的方式

class Program{
    static void DownloadFile(object filename)
    {
        Console.WriteLine("开始下载:"+Thread.CurrentThread.ManagedThreadId+" "+filename);
        Thread.Sleep(2000);
        Console.WriteLine("下载完成");
    }
    static void Main()
    {
        Thread t = new Thread(DownloadFile);
        t.Start("激情燃烧.avi");//通过Start来传递阐述
        Console.WriteLine("Main");
    }
}
//输出为:
//Main
//开始下载11 激情燃烧.avi
//下载完成

另一种传递参数的方式

通过单独创建Thread类

class MyThread
{
    private string filename;
    private string filepath;
    public MyThread(string fileName, string filePath)
    {
        this.filename = fileName;
        this.filepath = filePath;
    }

    public void DownFile()
    {
        Console.WriteLine("开始下载"+filepath+filename);
        Thread.Sleep(2000);
        Console.WriteLine("下载完成");
    }
}
class Program{
    static void Main()
    {
        MyThread my = new MyThread("激情燃烧.avi","http://www.1024.com/");
        //构造一个thread对象时,不仅可以传递一个静态方法,也可以传递一个对象的普通方法
        Thread t = new Thread(my.DownFile);
        t.Start();
    }
}

//输出为:
//开始下载http://www.1024.com/激情燃烧.avi
//下载完成      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值