1.一个进程可以有多个应用程序域,而应用程序域在创建的时候会默认创建三个域:系统域,共享域,默认域(开发人员写的所有的代码在此域上执行)。注意:域的概念只有在DotNet程序下才有。
程序一运行,就有一个默认的主进程,有一个默认的主域,主域下面有一个默认的主线程,也就是Main()方法。
2.初始化一个线程Thread thread=new Thread(要执行的无参无返回值的方法);
启动线程:thread.Start();
设置线程是否是前台线程:thread.IsBackground=true;
如果设为true标识当前线程为后台线程。
给线程起名字:thread.Name("开发人员用的");
给线程设置优先级:thread.Priority=ThreadPriority.AboverNormal;优先级最高。
关闭线程:thread.Abort();
等待线程执行结束:thread.Join();//哪个线程调用此方法,就是让哪个线程等待thread线程。
BeginInvoke();//启动一个新的线程,新的线程回调函数指向委托的方法。(属于后台线程,此线程是由.net提供的线程池提供)。var result=addDel.BeginInvoke();
如何去拿另外一个线程执行方法的结果?
int retVal=addDel.EndInvoke(result);
3.当一个委托被多个线程重复使用,会产生溢出怎么办?用lock()方法来锁定这个委托对象,一旦对象被锁定之后,那么就只能有一个线程可以访问这个委托对象。
4.线程池的概念。ThreadPool。QueueUserWorkItem();使用线程池会极大的提高线程的使用效率。
线程池默认最小4个,最大是1024个线程。
1.在C与C++语言中,函数指针没有约束,可以指向任何函数,而C#语言中的委托则只能指向单独格式的方法签名的方法。
2.扩展方法的复习:静态类,静态方法,this关键字。
在定义扩展方法的时候,不管是方法签名,还是返回值和参数,都要定义好List<T>,不能省略,在使用的时候方法可以省略List<T>.
一些浅略的笔记,希望可以帮到你。 |