首页 > 编程 > C# > 正文

C#开启线程的四种方式示例详解

2020-01-24 00:13:24
字体:
来源:转载
供稿:网友

一、异步委托开启线程

 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("下载完成!"); }

运行结果:

总结

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表