static void Main(string[] args){//1.利用委托创建线程,无反回值用Action,有返回值用FuncAction a = AA;a.BeginInvoke(10,null,null);Func b = BB;b.BeginInvoke( ar =>{int num = b.EndInvoke(ar);//获取返回值Console.WriteLine(num);},null); // 2,利用Thread来创建线程 Thread t1 = new Thread(AA);//创建线程,调用Mrcxd方法 //t1.IsBackground = true;//设置为后台线程 t1.Start("哈哈");//开启线程并且传入参数,注:调用的方法如果用参数,必须是object类型 //t1.Abort();//终止这个线程 t1.Join();//设置主线程睡眠,等待t1线程执行完再执行下面的代码 Console.WriteLine("Main线程"); // 3,利用线程池来创建线程 ThreadPool.QueueUserWorkItem(AA, 20);//线程池中的线程都为后台线程,不可修改为前台线程 // ThreadPool.QueueUserWorkItem(BB); Console.ReadKey(); } private static void AA(object x) { Console.WriteLine("锄禾日当午" + x); } private static int BB() { Console.WriteLine("学C真辛苦"); return 100; } 没有评论: 发表评论 较新的博文 较早的博文 主页 订阅: 博文评论 (Atom)
// 2,利用Thread来创建线程 Thread t1 = new Thread(AA);//创建线程,调用Mrcxd方法 //t1.IsBackground = true;//设置为后台线程 t1.Start("哈哈");//开启线程并且传入参数,注:调用的方法如果用参数,必须是object类型 //t1.Abort();//终止这个线程 t1.Join();//设置主线程睡眠,等待t1线程执行完再执行下面的代码 Console.WriteLine("Main线程"); // 3,利用线程池来创建线程 ThreadPool.QueueUserWorkItem(AA, 20);//线程池中的线程都为后台线程,不可修改为前台线程 // ThreadPool.QueueUserWorkItem(BB); Console.ReadKey(); } private static void AA(object x) { Console.WriteLine("锄禾日当午" + x); } private static int BB() { Console.WriteLine("学C真辛苦"); return 100; }