基礎加強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();填充矩形
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章