简介
过去,在VB中进行多线程的应用程序开发是单调乏味的。多次生成新的线程会导致生成错误 :-)不过在VB.NET中已经发生了改变。 VB.NET现在可以像 Java一样简单的处理多线程。在下面我们将看到一个简单的可运行的例子。
生成多线程的应用程序例子
下面是threadtest.vb中的代码::

imports System 
imports System.Threading     
public class AClass       
    public sub Method1()         
        Dim i as integer         
        For i = 1 to 100
                  Console.Writeline("inside method1 of AClass object i={0}",i)         
        next     
    end sub       
    public sub Method2()         
        Dim i as integer         
        For i = 1 to 100
                  Console.Writeline("inside method2 of AClass object i={0}",i)
        next     
    end sub   
end class   
public class ThreadTest       
    public shared sub Main()         
        dim obj as new aclass         
        dim th1,th2 as thread           
        th1=new Thread(new ThreadStart(addressof obj.method1))         
        th1.start           
        th2=new Thread(new ThreadStart(addressof obj.method2))         
        th2.start           
        dim i as integer         
        For i= 1 to 100
                  Console.WriteLine("Inside the Sub Main i={0} ",i)         
        Next     
    end sub   
end class


解析一下上面的例子:

  • 我们设计一个类 AClass ,它有两个方法 Method1 和 Method2
  • 这些方法在控制台循环打印一些消息
  • 我们用另一个类调用 AClass类
  • 在 Main() 方法中我们创建一个线程类的实例
  • 在System.Threading 命名空间中包含处理线程的属性和方法
  • 在线程类的构造中我们使用 ThreadStart 类,它是一个委托,当线程开始时,方法将被执行
  • 运行Start() 方法,运行线程
  • 使用VBC命令行编译这个应用程序

vbc threadtest.vb /t:exe
当你运行这个exe文件时可以看到两个方法和main方法的混合输出,这表明不同的线程都在运行
另外除了上面的方法,还有许多处理线程的其他方法

  • Stop() : 停止这个线程的执行
  • Suspend() : 挂起线程的执行
  • Resume() : 唤起挂起的线程
  • Sleep() : 挂起指定毫秒数的线程

作者
Bipin Joshi
Bipin Joshi BinaryIntellect Consulting 的所有者,在那里他提供了许多关于 .NET 技术的训练程序。