求教:vb.net 多线程问题

wy_zhou 2019-03-04 09:12:42
Public Class ClientForm

'访问其他控件的线程
Dim other_thread As Thread
'个人权限列表所在的字符串
Dim quanxian_list As String

Delegate Sub quanxian_oth(ByVal ai As String)

此处是通过TCP/IP服务器返回的字符串判断后执行此代码
other_thread = New Thread(AddressOf quanxian_weituo)
other_thread.Start()

'此过程是委托过程
Public Sub quanxian_weituo()
Dim quanx As String
Dim bb As Int16

bb = Microsoft.VisualBasic.Right(quanxian_list, Len(quanxian_list) - InStr(quanxian_list, "δ")) '获得权限数量
quanxian_list = Microsoft.VisualBasic.Left(quanxian_list, InStr(quanxian_list, "δ") - 1) '所有权限的字符串,可以假设为a01|a02|等等

For i = 1 To bb
quanx = Microsoft.VisualBasic.Left(quanxian_list, InStr(quanxian_list, "|") - 1) '当前权限名称,可以理解为某一个可以代替一个控件名称的字符串
quanxian_list = Microsoft.VisualBasic.Right(quanxian_list, Len(quanxian_list) - InStr(quanxian_list, "|"))
Me.Invoke(New quanxian_oth(AddressOf quanxiang_true), quanx) '同步调用
Next i
other_thread.Abort()
End Sub
'此过程是执行过程,MenuStrip1控件下的项全部为false,遍历MenuStrip1控件,查找MenuStrip1下的名称与response 字符串相同的项,如果相同则MenuStrip1下项的enabled为true
Public Sub quanxiang_true(ByVal response As String)
Dim cu_control, nu_control As ToolStripMenuItem
For Each nu_control In Me.MenuStrip1.Items
For Each cu_control In nu_control.DropDownItems
If cu_control.Name = response Then
cu_control.Enabled = True
End If
Next
Next

End Sub
end class
问:红色字体在第一次执行就出现假死现象,不执行quanxiang_true过程,有没有大神帮忙分析下是什么原因红色字体的invoke不执行quanxiang_true过程?
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
面向医学编程 2019-03-13
  • 打赏
  • 举报
回复
人才,用了这么多个循环,也不加一个application.doevent。你这样不假死才怪。
  • 打赏
  • 举报
回复
控件性能低劣,不能用控件当作什么程序存储。当你处理数据的时候,应该尽量直接处理控件背后的数据源,而不是去遍历查找控件。
wy_zhou 2019-03-05
  • 打赏
  • 举报
回复
1、那应该怎样将字符串做为控件名称进行操作呢? 2、还有就是程序中为什么不能进行过程的引用呢?

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧