VB.NET程序界面假死如何解决
我的程序需要做访问网络的耗时操作,运行时出现界面假死的现象,使用了多线程之后还是如此,请问如何解决这个问题?使用多线程时是通过委托Invoke访问界面的控件,一边获取网络...
我的程序需要做访问网络的耗时操作,运行时出现界面假死的现象,使用了多线程之后还是如此,请问如何解决这个问题?使用多线程时是通过委托Invoke访问界面的控件,一边获取网络数据,一边更新界面内容。请问如果多线程运行时不访问界面控件是不是就不会出现界面假死的现象?
Code开始////////////////////////////////////////
’建立托管
Delegate Sub Tuo()
’托管(Th为待托管事件)
Private Sub TuoCenter()
Me.Invoke(New Tuo(AddressOf Th))
End Sub
‘建立线程
Dim thread1 As Thread = New System.Threading.Thread(AddressOf TuoCenter)
’启动线程
thread1.Start()
[Code]结束////////////////////////////////////////
我想到一种方法:把控件数据读取到变量,这样在多线程运行时,线程就不用访问控件,然后获取网络数据到变量,结束线程时再把数据显示到界面,不知道可不可行?有没有更好的方法解决界面假死问题? 展开
Code开始////////////////////////////////////////
’建立托管
Delegate Sub Tuo()
’托管(Th为待托管事件)
Private Sub TuoCenter()
Me.Invoke(New Tuo(AddressOf Th))
End Sub
‘建立线程
Dim thread1 As Thread = New System.Threading.Thread(AddressOf TuoCenter)
’启动线程
thread1.Start()
[Code]结束////////////////////////////////////////
我想到一种方法:把控件数据读取到变量,这样在多线程运行时,线程就不用访问控件,然后获取网络数据到变量,结束线程时再把数据显示到界面,不知道可不可行?有没有更好的方法解决界面假死问题? 展开
展开全部
在Th过程中加入 Threading.Thread.Sleep(1)可以解决假死
追问
不行。我这个是耗时操作,使用睡眠也得等访问网络数据结束后才能Sleep,根本没有用。
追答
今天看到篇文章,估计对你有用
“在vb.net中运用多线程实现远程数据收集”
链接:http://www.bianceng.cn/Programming/VB_NET/201001/14675.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Application.DoEvents()
追问
这个刷新操作在耗时程序执行完之后才会执行,不能解决问题。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询