通过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
//下载完成