C#复习之进程浅谈

1.委托的复习:
->强类型的指针
->委托约束了方法的签名,
->定义一个委托变量是,指向第一个方法的时候需要new,后面的可以用+=
->委托指向实例方法时必须有实例才能指向实例的方法
->内部的构造:
_target(目标):如果指向的是静态的方法为null,如果是实例的方法此时的_target指向的对象的实例
_methodPtr:指向了方法的地址
委托的数组:指向+=计算后的委托
->委托使用升级(匿名方法):如果在程序中方法非常简单而且不经常使用,则考虑使用匿名方法
委托类型 委托名=delegate(int a,int b){方法体};(匿名方法必须使用delegate关键字,后面跟方法的签名)
->lambda:
->委托类型 委托名=(int a,int b)=>{方法体}
->委托类型 委托名=(a,b)=>{方法体};
如果方法体只有一句的时候可以省略,lambda的参数的类型可以省略,因为定义委托类型是的时候已经确定了参数的类型
lambda本质就是匿名方法
->list.FindAll():内部会遍历集合的每一项参数是一个委托
->扩展方法:静态类,静态方法,this
->
->泛型委托:Func<t1,resulte>:第一个参数是传入的参数,最后一个是返回的参数类型可以有16个参数
Action<t1,t1>:与Func的泛型委托一样,只是没有返回值
->委托的异步调用:
->文件流:
->FileStream:
->字符串和字符数组相互转化的时设计到了编码格式
2.多线程:
->进程:隔离了不同应用程序的资源,
->线程:执行流。系统同一个时间只能执行一个线程,多核的CPU也是只能执行一个线程,但是切换线程是非常快,很想同一时间执行了多个线程。切换线程也需要占用空间的,线程创建时需要线程的控制块、线程栈、线程寄存器
->打印当前主线程的信息:Thread类
Thread th=Thread.CurrentThread;
ConSoloe.WriteLine(th.MangedThreadId);//MangedThreadId是线程的唯一的编号
->创建线程:
Thread demoThread=new Thread();//新建实例时需要传入参数ThreadStrat类型(委托);
demoThread.Start();//启动线程
案例创建了一个线程的实例,只有调用Start()方法时才开始分配线程并执行
demoThread.Priority=ThreadPriority.Highest;//设置线程的优先级,只是建议操作系统给当前的线程的优先级最高
demoThread.IsBackground=true;设置成后台线程:当前台线程全部关闭以后后台线程直接关闭。如果设置成前台线程,必须当前线程执行完毕后整个进程才结束
->关闭线程:demoThread.Abort();
->使用Abort()方法
->合并线程:使用Join()方法
->表示将当前执行此代码的线程阻塞,等待demoThread线程执行完毕
->带参数的线程:
->创建线程时穿入一个带参数的方法,在Start的时候传入该参数的值,带参数的方法的参数类型需要是Object类型,保证可以传入任何类型的参数
3.应用程序域:AppDomain类
->内存分配的堆
->代码的安全边界
->异常处理
->线程同时只能在一个应用程序域中,但是一个应用程序域能运行多个线程
->获得应用程序域:CurrentDomain.FriendlyNames
->创建应用程序域:使用AppDomain的CreateDomain()方法
AppDomain domain=AppDomain.CreateDomain("ddd");
domain.ExecuteAssembly("")
->一个应用程序域只能运行一个EXE或者多个dll
4.操作进程:
->使用Process类,
->GetProcess()方法返回一个数组,当前系统所有的进程
->Start()方法:开启一个进程
Process.Start("notepad.exe");
->Sleep();表示进程暂停一段时间
->关闭进程:kill()

posted @ 2013-01-06 21:00  馋嘴的毛毛  阅读(147)  评论(0编辑  收藏  举报