免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
C# 線程

如同java一樣,在c#中寫一個多線程應(yīng)用是非常簡單的,本章將介紹如何在c#種開發(fā)多線程程序。在.net中線程是由System.Threading 名字空間所定義的。所以你必須包含這個名字空間。
using System.Threading;
開始一個線程
System.Threading 名字空間的線程類描述了一個線程對象,通過使用類對象,你可以創(chuàng)建、刪除、停止及恢復一個線程。創(chuàng)建一個新線程通過new 操作,并可以通過start()方法啟動線程
thread = new Thread(new ThreadStart(HelloWorld));
thread.Start();
注意:和java程序不同,創(chuàng)建新線程并調(diào)用start()方法后并不去調(diào)用run()方法,而是傳遞線程調(diào)用程序
下面是啟動線程執(zhí)行的函數(shù)
protected void HelloWorld()
{
string str ;
Console.write("helloworld");
}
}
殺死一個線程
線程類的 Abort()方法可以永久的殺死一個線程。在殺死一個線程起前應(yīng)該判斷線程是否在生存期間。
if ( thread.IsAlive )
{
thread.Abort();
}
停止一個線程
Thread.Sleep 方法能夠在一個固定周期類停止一個線程
thread.Sleep();
設(shè)定線程優(yōu)先級
線程類中的ThreadPriority 屬性是用來設(shè)定一個ThreadPriority的優(yōu)先級別。線程優(yōu)先級別包括Normal, AboveNormal, BelowNormal, Highest, and Lowest幾種。
thread.Priority = ThreadPriority.Highest;
掛起一個線程
調(diào)用線程類的Suspend()方法將掛起一個線程直到使用Resume()方法喚起她。在掛起一個線程起前應(yīng)該判斷線程是否在活動期間。


if (thread.ThreadState == ThreadState.Running )
{
thread.Suspend();
}
喚起一個線程
通過使用Resume()方法可以喚起一個被掛起線程。在掛起一個線程起前應(yīng)該判斷線程是否在掛起期間,如果
線程未被掛起則方法不起作用。
if (thread.ThreadState == ThreadState.Suspended )
{
thread.Resume();
}

 

 

在很多情況下你可能要在各個線程中分別執(zhí)行存在輕微差別的任務(wù),同時需要把某種參數(shù)從一種任務(wù)所在的線程傳遞給另一任務(wù)所在的線程。要完成這一目標可以采取好幾種合理的方式,最直接的做法就是創(chuàng)建一種Task對象,由它保存線程、特有的參數(shù)以及提供ThreadStart指派的worker方法。利用worker方法即可讀取所提供的參數(shù),因為它正好就是Task對象的成員所以對線程當然是唯一的。通過令線程成為一種公共字段,你就可以獲得訪問線程所有成員的權(quán)限而不必編寫額外的封裝代碼了。請參看程序清單B 閱讀這一技術(shù)的有關(guān)示例。

程序清單B
using System;
using System.Threading;
namespace TaskDemo {
   public class MyTask {
      public Thread m_thread;
      string m_name;
      public MyTask(string name) {
      m_name = name;
      m_thread = new Thread(new ThreadStart(Worker));
     }
      private void Worker() {
        Console.WriteLine("Hello, ");
         Thread.Sleep(1500);
        Console.WriteLine(m_name);
      }
   }      
class TaskDemo1 {
         static void Main(string [] args)  {              
         MyTask task1 = new MyTask("Bill");
         MyTask task2 = new MyTask("Steve");
         task1.m_thread.Start();
         task2.m_thread.Start();
         }
}
}

 

 

關(guān)閉窗口結(jié)束線程

 private   void   Form1_Closing(object   sender,   System.ComponentModel.CancelEventArgs   e) 
  { 
          if(my_thread.ThreadState.ToString()   =="Suspended")   
          { 
  my_thread.Resume();   
  my_thread.Abort(); 
  my_thread.Join();   
          } 
          else 
        { 
  my_thread.Abort(); 
  my_thread.Join();   
        } 
  } 

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
.NET多線程 傳入?yún)?shù)與獲取返回值
C#多線程編程簡述
多線程 thread和Task的用法以及注意事項
C# 看懂這100+行代碼,你就真正入門了(經(jīng)典)
C# 多線程入門系列(二)
C#多線程編程之Thread類
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服