1、接口
接口A ,实现接口A的类B 、类C ,操作类D:
一、类B、类C是实现接口的不同实例对象,类B与类C实现接口的方法时不同的,只是方法名相同
二、类D中包含接口A的,在类D中调用接口A时,把类B或类C的对象传给A则调用B或C中实现的方法
三、实现在类D中调用类B或类C实现的方法
2、锁
Object OpenLock = new Object();
一、Monitor.Enter 与Lock都是加锁操作
1)、 Monitor.Enter(OpenLock)
try { }
finally { Monitor.Exit(OpenLock) }
2)、 Lock(OpenLock)
{ }
二、Lock只能针对引用类型加锁,Monitor还能对值类型加锁
三、Lock是一个语法糖,它将Monitor对象进行封装,对object对象加上一个互斥锁,其他进程暂不能对比对象操作
四、Monitor/Lock都是排他锁(排他锁:对对象A加上排他锁,则可在此进程中对A对象修改、读写其他事物不能操作A)
3、(BeginInvoke/EndInvoke) 异步委托;
BeginInvoke异步 / Invoke同步 :在多线程中经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法(调用控件的方法应该封装起来)时错误的,BeginInvoke / Invoke就是为了解决这个问题的;
Invoke导致工作线程等待,而BeginInvoke不会,异步基于多线程