VB.NET有很多值得学习的地方,这里我们主要介绍VB.NET多线程,包括介绍功能和实现等方面。
功能:把选定文件夹下的dll、子文件夹和子文件夹中的dll填写到窗体的treeview控件上。缺点:窗体简单,代码有些混乱,线程之间的调用可能没有到最优化。
实现:imagelist中的图片需要自己重新定义。

VB.NET多线程的优点:可以及时响应用户的操作,不至于产生“未响应”的尴尬;设计合理(结合需求)的话,可使软件的性能提高。VB.NET多线程的编写:结构合理、注意同步。
以上是我对这个例程和VB.NET多线程的个人体会,如有不妥之处,还请大家批评指正。
- Imports System.IO
 - Public Class Form1
 - Inherits System.Windows.Forms.Form
 - #Region " Windows 窗体设计器生成的代码 "
 - Public Sub New()
 - MyBase.New()
 - '该调用是 Windows 窗体设计器所必需的。
 - InitializeComponent()
 - '在 InitializeComponent() 调用之后添加任何初始化
 - End Sub
 - '窗体重写 dispose 以清理组件列表。
 - Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
 - If disposing Then
 - If Not (components Is Nothing) Then
 - components.Dispose()
 - End If
 - End If
 - MyBase.Dispose(disposing)
 - End Sub
 - 'Windows 窗体设计器所必需的
 - Private components As System.ComponentModel.IContainer
 - '注意: 以下过程是 Windows 窗体设计器所必需的
 - '可以使用 Windows 窗体设计器修改此过程。
 - '不要使用代码编辑器修改它。
 - Friend WithEvents TreeView1 As System.Windows.Forms.TreeView
 - Friend WithEvents btnOpenBrower As System.Windows.Forms.Button
 - Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
 ()> Private Sub InitializeComponent() - Me.components = New System.ComponentModel.Container
 - Dim resources As System.Resources.ResourceManager =
 
New System.Resources.ResourceManager(GetType(Form1))- Me.TreeView1 = New System.Windows.Forms.TreeView
 - Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)
 - Me.btnOpenBrower = New System.Windows.Forms.Button
 - Me.SuspendLayout()
 - 'TreeView1
 - Me.TreeView1.Dock = System.Windows.Forms.DockStyle.Left
 - MeMe.TreeView1.ImageList = Me.ImageList1
 - Me.TreeView1.Location = New System.Drawing.Point(0, 0)
 - Me.TreeView1.Name = "TreeView1"
 - Me.TreeView1.Size = New System.Drawing.Size(376, 581)
 - Me.TreeView1.TabIndex = 0
 - 'ImageList1
 - Me.ImageList1.ImageSize = New System.Drawing.Size(16, 16)
 - Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"),
 
System.Windows.Forms.ImageListStreamer)- Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent
 - 'btnOpenBrower
 - Me.btnOpenBrower.Location = New System.Drawing.Point(408, 64)
 - Me.btnOpenBrower.Name = "btnOpenBrower"
 - Me.btnOpenBrower.Size = New System.Drawing.Size(96, 23)
 - Me.btnOpenBrower.TabIndex = 1
 - Me.btnOpenBrower.Text = "Open Brower"
 - 'Form1
 - Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
 - Me.ClientSize = New System.Drawing.Size(536, 581)
 - Me.Controls.Add(Me.btnOpenBrower)
 - Me.Controls.Add(Me.TreeView1)
 - Me.Name = "Form1"
 - Me.Text = "Form1"
 - Me.ResumeLayout(False)
 - End Sub
 - #End Region
 - Private Sub OpenBrower()
 - Dim f As New FolderBrowserDialog
 - If f.ShowDialog = DialogResult.OK Then
 - Me.TreeView1.Nodes.Clear()
 - Me.SuspendLayout()
 - Dim nodeTemp As TreeNode = CType(Me.Invoke(New AddTreeNodeHandler
 
(AddressOf Me.AddFileToTreeview), New Object() {f.SelectedPath}), TreeNode)- Me.AddFile(New DirectoryInfo(f.SelectedPath), nodeTemp)
 - Me.ResumeLayout(False)
 - End If
 - End Sub
 - Private Sub AddFile(ByVal dirPath As DirectoryInfo, ByVal node As TreeNode)
 - Dim tempHandler As New AddFileHandler(AddressOf Me.AddFileToTreeNode)
 - For Each dir As DirectoryInfo In dirPath.GetDirectories()
 - Dim nodeTemp As TreeNode = CType(Me.Invoke(tempHandler,
 
New Object() {dir.Name, CLASSIO.Directory, node}), TreeNode)- Me.AddFile(dir, nodeTemp)
 - Next
 - For Each file As FileInfo In dirPath.GetFiles("*.dll")
 - Me.Invoke(tempHandler, New Object() {file.Name, CLASSIO.File, node})
 - Next
 - End Sub
 - Private Function AddFileToTreeNode(ByVal str As String,
 
ByVal cls As CLASSIO, ByVal node As TreeNode) As TreeNode- Dim nodeTemp As New TreeNode(str)
 - nodeTemp.ImageIndex = CInt(cls)
 - node.Nodes.Add(nodeTemp)
 - nodeTempnodeTemp.SelectedImageIndex = nodeTemp.ImageIndex
 - Return nodeTemp
 - End Function
 - Private Function AddFileToTreeview(ByVal str As String) As TreeNode
 - Dim nodeTemp As New TreeNode(str)
 - Me.TreeView1.Nodes.Add(nodeTemp)
 - Return nodeTemp
 - nodeTemp.SelectedImageIndex = CInt(CLASSIO.Directory)
 - End Function
 - Private Sub btnOpenBrower_Click(ByVal sender As System.Object,
 
ByVal e As System.EventArgs) Handles btnOpenBrower.Click- '多线程
 - Dim t As Threading.Thread = New Threading.Thread(AddressOf Me.OpenBrower)
 - t.Start()
 - '单线程
 - 'Me.OpenBrower()
 - End Sub
 - End Class
 - Public Enum CLASSIO
 - File = 1
 - Directory = 0
 - End Enum
 - Public Delegate Function AddFileHandler(ByVal str As String,
 
ByVal cls As CLASSIO, ByVal Node As TreeNode) As TreeNode- Public Delegate Function AddTreeNodeHandler(ByVal str As String) As TreeNode
 
                新闻名称:分享个人总结VB.NET多线程
                
                文章分享:http://www.csdahua.cn/qtweb/news22/465772.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网