基础加强6之多线程

多线程
进程:
一个程序就是一个进程,就相当于在内存里开辟一块空间
一个进程有多个线程。
线程:
操作线程的类在Threading命名空间下。
Thread thread=new Thread(方法名);注意Tread传入方法用到委托,不用加方法的括号
                     前台线程:
默认情况都是前台线程,特点:要所有的前台线程退出以后 程序才会退出
进程默认的线程叫做主线程或者UI线程。
线程什么时候结束,该线程执行的方法执行完以后 线程自动退出
   后台线程:
 只要所有的前台线程结束 后台线程就会立即结束
 设置线程为后台线程:thread.IsBackGround=true;
                   TextBo.CheckForIllegalCrossThreadCalls=false;//关闭控件的跨线程访问。
 
   线程重入
:多个线程访问同一个资源 可能造成不同步的情况,这个叫做线程重入
如何解决这个问题:Lock(this)this代表当前对象,Lock将这个对象当参照物,将它锁住
                          例: Lock(this)
  {
for(int i=0;i<1000000;i++)
{
int mun+=mun;
}
  }
  执行步骤:一个线程进来执行代码,并加一把锁,执行完就解锁,正在执行的时候另外一个线程来执行,发现有线程在执行就等待
  ,知道第一个线程执行完,第二个线程采取执行
 th.Abort();强制停止线程。
 Thread.Sleep();将当前线程暂停,括号中代表毫秒。
 Thread.CurrentThread;这个属性是得到当前线程的引用。
委托
委托声明:public delegate void SayHi(),用delegate修饰
委托时用来保存多个个方法的指针。传入的方法决定委托有没有返回值和参数
委托跟类是一个级别,需要new。
使用+=为委托对象追加方法。


GDI常用类
问题:如果一个类不是抽象类也不是静态类,是普通类,并且没有提供构造函数(可以new ,是静态构造函数)
       通过这个类返回一个静态方法。
从panelback控件上创建一个画家对象: Graphics g=Graphics.FromHwnd(this.panelback.Handle); 没法new出来,只能调用他的静态方法返回一个对象
DrawEllipse(Pens.Black);pens是笔,画圆;
DrawArc();画弧线;
DrawLine();划线;
DrawRectangle();画矩形;
DrawString();画字符串;
Fill.Ellopase();填充;Brushes刷子
FillRectangle();填充矩形
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章