一、异步委托开启线程
- public static void Main(string[] args){
- Action<int,int> a=add;
- a.BeginInvoke(3,4,null,null);//前两个是add方法的参数,后两个可以为空
- Console.WriteLine("main()");
- Console.ReadKey();
- }
- static void add(int a,int b){
- Console.WriteLine(a+b);
- }
运行结果:

如果不是开启线程,像平常一样调用的话,应该先输出7,再输出main()
二、通过thread类开启线程
- using System;
- using System.Threading;
- public static void Main(string[] args){
- Thread t=new Thread(DownLoadFile_My);//创建了线程还未开启
- t.Start("http://abc/def/**.mp4");//用来给函数传递参数,开启线程
- Console.WriteLine("main()");
- Console.ReadKey();
- }
- //thread开启线程要求:该方法参数只能有一个,且是object类型
- static void DownLoadFile_My(object filePath){
- Console.WriteLine("开始下载:"+filePath);
- Thread.Sleep(2000);
- Console.WriteLine("下载完成!");
- }
运行结果:

三、通过线程池开启线程
- public static void Main(string[] args){
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- ThreadPool.QueueUserWorkItem(DownLoadFile_My);
- Console.WriteLine("main()");
- Console.ReadKey();
- }
- static void DownLoadFile_My(object state){
- Console.WriteLine("开始下载... 线程ID:"+Thread.CurrentThread.ManagedThreadId);
- Thread.Sleep(2000);
- Console.WriteLine("下载完成!");
- }
运行结果:

4、通过任务开启线程
1>Task开启线程
- using System;
- using System.Threading;
- using System.Threading.Tasks;
- public static void Main(string[] args){
- Task t=new Task(DownLoadFile_My);
- t.Start();
- Console.WriteLine("main()");
- Console.ReadKey();
- }
- static void DownLoadFile_My( ){
- Console.WriteLine("开始下载... 线程ID:"+Thread.CurrentThread.ManagedThreadId);
- Thread.Sleep(2000);
- Console.WriteLine("下载完成!");
- }
运行结果:

2>TaskFactory开启线程
- public static void Main(string[] args){
- TaskFactory tf=new TaskFactory();
- tf.StartNew(DownLoadFile_My);
- Console.WriteLine("main()");
- Console.ReadKey();
- }
- static void DownLoadFile_My( ){
- Console.WriteLine("开始下载... 线程ID:"+Thread.CurrentThread.ManagedThreadId);
- Thread.Sleep(2000);
- Console.WriteLine("下载完成!");
- }
运行结果:

总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对w3xue的支持。如果你想了解更多相关内容请查看下面相关链接