首页 > 代码库 > C# 简单线程实例
C# 简单线程实例
1.简单线程实例 以及委托(同步委托、异步委托)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using System.Runtime.Remoting.Messaging;namespace ThreadTest{ class Program { static void Main(string[] args) { Console.WriteLine("主线程运行中.....{0}",Thread.CurrentThread.ManagedThreadId); #region 线程 Thread thread = new Thread(new ThreadStart(ShowMsg)); //只是 建议操作系统把当前线程当成 低级别 thread.Priority = ThreadPriority.Lowest; //给开发人员用,来识别不同系统 thread.Name = "threadtest"; //后台线程:如果所有的前台线程都退出了,那么后台线程自动关闭 thread.IsBackground = true; //并没有执行,告诉操作系统 thread.Start(); //关闭线程 //thread.Abort(); #endregion /* #region 异步委托 AddDel addDel = new AddDel(Add); int result = 0; //同步调用,当前线程去调用 //int result = addDel(1, 2); //第一种:回调函数 //启动委托指向的方法执行,具体有线程池提供一个线程来执行当前的委托执行的方法 //IAsyncResult asynResult = addDel.BeginInvoke(1, 2, null, null); //此EndInvoke方法会阻塞当前线程,直到委托方法执行完毕后,并将返回值交result后,继续执行后面代码 //int result = addDel.EndInvoke(asynResult); //第二种:使用回调函数 IAsyncResult ascResult = addDel.BeginInvoke(1, 2, new AsyncCallback(MyDelCallBack), 33); //Console.WriteLine("result:{0}", result); #endregion **/ Console.WriteLine("主线程执行完成..."); Console.ReadKey(); } public delegate int AddDel(int a, int b); public static int Add(int a,int b) { Console.WriteLine("工作线程工作着....{0}",Thread.CurrentThread.ManagedThreadId); Thread.Sleep(3000); return a+b; } //异步委托 执行完成了的回调函数 public static void MyDelCallBack(IAsyncResult asyResult) { //将接口类型转换成实例类型 AsyncResult aResult = (AsyncResult)asyResult; //判断委托是否执行完成 while(!aResult.IsCompleted) { //主线程干些时间 //防止主线程阻塞 } //转换成我们自己的委托类型 AddDel addDelResult = (AddDel)aResult.AsyncDelegate; //获取回调状态值 int state = (int)aResult.AsyncState; //执行完成获取 执行的结果 int result = addDelResult.EndInvoke(asyResult); Console.WriteLine("异步完成的回调方法执行的结果:{0}----回调状态:{1}----线程id:{2}",result,state,Thread.CurrentThread.ManagedThreadId); } static void ShowMsg() { Console.WriteLine("ShowMsg方法----工作线程工作着....{0}",Thread.CurrentThread.ManagedThreadId); Thread.Sleep(1000); } }}
C# 简单线程实例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。