熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

同Java一樣簡單!VB.NET多線程開發實例

2013-11-13 09:40:09  來源: .NET編程 

  VBNET(Visual BasicNET)是為適應Microsoft NET框架的需要對Visual Basic進行了重大改造後的開發工具它比Visual Basic 功能更強大更易於使用其中最重要的變化就是對象繼承在VBNET中所有可管理的類型都衍生自SystemObject作為編程工具最重要的一個特性就是垃圾碎片的回收它由CLR(Common Language Runtime)進行控制並提供更好的內存管理功能通用的類型定義可以提供更好的互操作性和協同工作能力因此VBNET顯得更強大更具可靠性
  
  在VBNET中大多數CLR內建的類型都在System名字空間裡已經定義了比如SystemObject SystemInt 和 SystemString要注意的是一個名字空間可能嵌在另一個名字空間內象SystemData裡就有SystemDataDataSet的類
  
  代表是CLR編程模型很重要的一個新概念代表是一個特殊類型的可管理的類當你創建一個代表的實例時你必須提供一個帶有匹配簽名的方法執行的地址一旦創建了一個代表的實例調用方法將變的很容易
  
  過去我們利用VB開發多線程的應用程序時是一件很令人痛苦的事經常是多線程的程序運行是會變成多錯誤的程序!但在VBNET中這種狀況已經大為改觀現在我們利用VBNET處理多線程和利用JAVA處理多線程一樣簡單了下面我們就舉個例子來看看VBNET的多線程吧!
  
  下面是多線程程序threadtestvb的代碼
  
  imports System
  imports SystemThreading
  
  public class AClass
  
  public sub Method()
  Dim i as integer
  For i = to
  ConsoleWriteline(這是類AClass方法method的內容i)
  next
  end sub
  
  public sub Method()
  Dim i as integer
  For i = to
  ConsoleWriteline(這是類AClass方法method的內容i)
  next
  end sub
  
  end class
  
  public class ThreadTest
  
  public shared sub Main()
  dim obj as new aclass
  dim thth as thread
  
  th=new Thread(new ThreadStart(addressof thod))
  thstart
  
  th=new Thread(new ThreadStart(addressof thod))
  thstart
  
  dim i as integer
  For i= to
  ConsoleWriteLine(Main方法裡的內容i)
  Next
  end sub
  
  end class
  
  現在來讓我們剖析一下上面的例子
  
  我們創建了我們自己的類AClass並創建了兩個方法Method和Method
  這兩個方法很簡單只有一個For循環向輸出設備輸出一些信息
  我們還定義了另外一個類ThreadTest來使用上面創建的類AClass
  在Main()方法中我們創建了類Thread的實例
  類Thread可以在SystemThreading名字空間裡得到它定義了處理線程的屬性和方法
  在類Thread的構造器中我們使用了類ThreadStart類ThreadStart是一個代表標志著當一個線程開始時就開始執行定義的方法
  為了執行定義的方法我們實際調用的是線程的Start()方法
  用VBC來編譯上面的程序vbc /out:threadtestexe threadtestvb
  運行編譯後的程序我們將會看到我們定義的兩個方法和main()方法的混合輸出這就說明每一個方法都在自己的線程下運行
  除了上面的方法線程還有下面常用的方法
  
  Stop():停止線程的運行
  Suspend()暫停線程的運行
  Resume()繼續線程的運行
  Sleep()停止線程一段時間(單位為毫秒)
From:http://tw.wingwit.com/Article/program/net/201311/11287.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.