如何在 Visual Basic.net 或 Visual Basic 2005 中创建线程

文章翻译 文章翻译
文章编号: 315577 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文介绍如何在 Microsoft Visual Basic.net 或 Visual Basic 2005 Windows 应用程序中创建线程。System.Threading 命名空间提供了线程处理所必需的类。

要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和服务包,您需要:
  • Microsoft Windows 2000 或 Windows XP
  • Microsoft Visual Basic.net 或 Microsoft Visual Basic 2005
本文假定您熟悉下列主题:
  • Visual Basic.net 编程或 Visual Basic 2005 编程
  • visual Studio.net 或 Visual Studio 2005 集成的开发环境 (IDE)
  • 常规熟悉委托和线程处理
  • 常规熟悉 Visual Basic.net 或 Visual Basic 2005

使用线程创建 Visual Basic.net 或 Visual Basic 2005 应用程序

  1. 启动 Microsoft Visual Studio.net 或 Microsoft Visual Studio 2005。
  2. 创建新命名 ThreadWinApp 的 Visual Basic Windows 应用程序项目。
  3. 将一个 按钮 控件添加到窗体。默认情况下,该按钮是名为 Button1
  4. ProgressBar 组件添加到窗体。默认情况下,进度栏被命名为 ProgressBar1
  5. 用鼠标右键单击该的表单,然后单击 查看代码
  6. 将以下语句添加到该文件的开头:
    Imports System.Threading
    					
  7. 将以下 Click 事件处理程序添加为 Button1
    Private Sub Button1_Click( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click
    
        MessageBox.Show("This is the main thread")
    End Sub
    					
  8. 将下面的变量添加到 Form1 类:
    Private trd As Thread
    					
  9. 将下面的方法添加到 Form1 类:
    Private Sub ThreadTask()
        Dim stp As Integer
        Dim newval As Integer
        Dim rnd As New Random()
    
        Do
            stp = ProgressBar1.Step * rnd.Next(-1, 2)
            newval = ProgressBar1.Value + stp
            If newval > ProgressBar1.Maximum Then
                newval = ProgressBar1.Maximum
            ElseIf newval < ProgressBar1.Minimum Then
                newval = ProgressBar1.Minimum
            End If
    
            ProgressBar1.Value = newval
    
            Thread.Sleep(100)
        Loop
    End Sub
    						
    注意: 这是支持的线程基础代码。此代码是一个无限循环该随机递增或递减 ProgressBar1 中的值,然后等待 100 毫秒为单位) 之前它将继续。
  10. Form1 中添加以下的 Load 事件处理程序。此代码创建一个新线程,使得在后台线程的线程,然后启动该线程
    Private Sub Form1_Load( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles MyBase.Load
    
        trd = New Thread(AddressOf ThreadTask)
        trd.IsBackground = True
        trd.Start()
    End Sub
    					

确认它可以工作

  1. 生成并运行该应用程序。请注意在进度栏中的值会随机更改。这是新的线程中操作。
  2. 为了演示主线程是独立于 ProgressBar 值更改为该线程,单击窗体上的按钮。一个消息框将显示以下消息:
    This is the main thread
    							
    等待输入。请注意,在进度栏中的值不断变化。

故障排除

在更复杂的应用程序确保在访问共享的变量时同步多个线程。有关详细的信息,请参阅 SyncLock 语句和 Visual Basic 联机帮助文档中的相关的主题。

属性

文章编号: 315577 - 最后修改: 2006年12月6日 - 修订: 4.3
这篇文章中的信息适用于:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 标准版
  • Microsoft Visual .NET 2002 标准版
关键字:?
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315577 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 315577
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com