分享个人总结VB.NET多线程
创始人
2024-06-09 12:31:36
0

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

VB.NET多线程的优点:可以及时响应用户的操作,不至于产生“未响应”的尴尬;设计合理(结合需求)的话,可使软件的性能提高。VB.NET多线程的编写:结构合理、注意同步。

以上是我对这个例程和VB.NET多线程的个人体会,如有不妥之处,还请大家批评指正。

  1. Imports System.IO  
  2. Public Class Form1  
  3. Inherits System.Windows.Forms.Form  
  4.  
  5. #Region " Windows 窗体设计器生成的代码 "  
  6.  
  7. Public Sub New()  
  8. MyBase.New()  
  9. '该调用是 Windows 窗体设计器所必需的。  
  10. InitializeComponent()  
  11. '在 InitializeComponent() 调用之后添加任何初始化  
  12. End Sub  
  13.  
  14. '窗体重写 dispose 以清理组件列表。  
  15. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)  
  16. If disposing Then  
  17. If Not (components Is Nothing) Then  
  18. components.Dispose()  
  19. End If  
  20. End If  
  21. MyBase.Dispose(disposing)  
  22. End Sub  
  23.  
  24. 'Windows 窗体设计器所必需的  
  25. Private components As System.ComponentModel.IContainer  
  26.  
  27. '注意: 以下过程是 Windows 窗体设计器所必需的  
  28. '可以使用 Windows 窗体设计器修改此过程。  
  29. '不要使用代码编辑器修改它。  
  30. Friend WithEvents TreeView1 As System.Windows.Forms.TreeView  
  31. Friend WithEvents btnOpenBrower As System.Windows.Forms.Button  
  32. Friend WithEvents ImageList1 As System.Windows.Forms.ImageList  
  33. ()> Private Sub InitializeComponent()  
  34. Me.components = New System.ComponentModel.Container  
  35. Dim resources As System.Resources.ResourceManager = 
    New System.Resources.ResourceManager(GetType(Form1))  
  36. Me.TreeView1 = New System.Windows.Forms.TreeView  
  37. Me.ImageList1 = New System.Windows.Forms.ImageList(Me.components)  
  38. Me.btnOpenBrower = New System.Windows.Forms.Button  
  39. Me.SuspendLayout()  
  40.  
  41. 'TreeView1  
  42.  
  43. Me.TreeView1.Dock = System.Windows.Forms.DockStyle.Left  
  44. MeMe.TreeView1.ImageList = Me.ImageList1  
  45. Me.TreeView1.Location = New System.Drawing.Point(0, 0)  
  46. Me.TreeView1.Name = "TreeView1" 
  47. Me.TreeView1.Size = New System.Drawing.Size(376, 581)  
  48. Me.TreeView1.TabIndex = 0 
  49.  
  50. 'ImageList1  
  51.  
  52. Me.ImageList1.ImageSize = New System.Drawing.Size(16, 16)  
  53. Me.ImageList1.ImageStream = CType(resources.GetObject("ImageList1.ImageStream"), 
    System.Windows.Forms.ImageListStreamer)  
  54. Me.ImageList1.TransparentColor = System.Drawing.Color.Transparent  
  55.  
  56. 'btnOpenBrower  
  57.  
  58. Me.btnOpenBrower.Location = New System.Drawing.Point(408, 64)  
  59. Me.btnOpenBrower.Name = "btnOpenBrower" 
  60. Me.btnOpenBrower.Size = New System.Drawing.Size(96, 23)  
  61. Me.btnOpenBrower.TabIndex = 1 
  62. Me.btnOpenBrower.Text = "Open Brower" 
  63.  
  64. 'Form1  
  65.  
  66. Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)  
  67. Me.ClientSize = New System.Drawing.Size(536, 581)  
  68. Me.Controls.Add(Me.btnOpenBrower)  
  69. Me.Controls.Add(Me.TreeView1)  
  70. Me.Name = "Form1" 
  71. Me.Text = "Form1" 
  72. Me.ResumeLayout(False)  
  73. End Sub  
  74.  
  75. #End Region  
  76. Private Sub OpenBrower()  
  77. Dim f As New FolderBrowserDialog  
  78. If f.ShowDialog = DialogResult.OK Then  
  79. Me.TreeView1.Nodes.Clear()  
  80. Me.SuspendLayout()  
  81. Dim nodeTemp As TreeNode = CType(Me.Invoke(New AddTreeNodeHandler
    (AddressOf Me.AddFileToTreeview), New Object() {f.SelectedPath}), TreeNode)  
  82. Me.AddFile(New DirectoryInfo(f.SelectedPath), nodeTemp)  
  83. Me.ResumeLayout(False)  
  84. End If  
  85. End Sub  
  86.  
  87. Private Sub AddFile(ByVal dirPath As DirectoryInfo, ByVal node As TreeNode)  
  88. Dim tempHandler As New AddFileHandler(AddressOf Me.AddFileToTreeNode)  
  89. For Each dir As DirectoryInfo In dirPath.GetDirectories()  
  90. Dim nodeTemp As TreeNode = CType(Me.Invoke(tempHandler, 
    New Object() {dir.Name, CLASSIO.Directory, node}), TreeNode)  
  91. Me.AddFile(dir, nodeTemp)  
  92. Next  
  93. For Each file As FileInfo In dirPath.GetFiles("*.dll")  
  94. Me.Invoke(tempHandler, New Object() {file.Name, CLASSIO.File, node})  
  95. Next  
  96. End Sub  
  97.  
  98. Private Function AddFileToTreeNode(ByVal str As String, 
    ByVal cls As CLASSIO, ByVal node As TreeNode) As TreeNode  
  99. Dim nodeTemp As New TreeNode(str)  
  100. nodeTemp.ImageIndex = CInt(cls)  
  101. node.Nodes.Add(nodeTemp)  
  102. nodeTempnodeTemp.SelectedImageIndex = nodeTemp.ImageIndex  
  103. Return nodeTemp  
  104. End Function  
  105.  
  106. Private Function AddFileToTreeview(ByVal str As String) As TreeNode  
  107. Dim nodeTemp As New TreeNode(str)  
  108. Me.TreeView1.Nodes.Add(nodeTemp)  
  109. Return nodeTemp  
  110. nodeTemp.SelectedImageIndex = CInt(CLASSIO.Directory)  
  111. End Function  
  112.  
  113. Private Sub btnOpenBrower_Click(ByVal sender As System.Object, 
    ByVal e As System.EventArgs) Handles btnOpenBrower.Click  
  114. '多线程  
  115. Dim t As Threading.Thread = New Threading.Thread(AddressOf Me.OpenBrower)  
  116. t.Start()  
  117.  
  118. '单线程  
  119. 'Me.OpenBrower()  
  120. End Sub  
  121. End Class  
  122.  
  123. Public Enum CLASSIO  
  124. File = 1 
  125. Directory = 0 
  126. End Enum  
  127.  
  128. Public Delegate Function AddFileHandler(ByVal str As String, 
    ByVal cls As CLASSIO, ByVal Node As TreeNode) As TreeNode  
  129. Public Delegate Function AddTreeNodeHandler(ByVal str As String) As TreeNode 

【编辑推荐】

  1. 全方位分析VB.NET编码规范
  2. 详细说明VB.NET变量中四点
  3. 三类十二种VB.NET数据类型全面介绍
  4. VB.NET初步知识,初学者必看
  5. 具体介绍四大类VB.NET循环

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...