vb.net中开一个线程,直到新窗体启动完成
PrivateSubPictureBox2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handl...
Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
PictureBox5.Show()
Application.DoEvents()
Form6.Show()
Me.Close()
End Sub
代码如上,现在 我点击PICTUREBOX2 启动form6的时候 picturebox5显示的gif动画图片不动, 跟假死一样,如果中间加 msgbox对话框后 图片就会动了 现在是不是要开一个线程 如何开呢
我QQ1971951508,高手指点一下,我现在在线中,急等 展开
PictureBox5.Show()
Application.DoEvents()
Form6.Show()
Me.Close()
End Sub
代码如上,现在 我点击PICTUREBOX2 启动form6的时候 picturebox5显示的gif动画图片不动, 跟假死一样,如果中间加 msgbox对话框后 图片就会动了 现在是不是要开一个线程 如何开呢
我QQ1971951508,高手指点一下,我现在在线中,急等 展开
2个回答
展开全部
虽然你的想法是在 LoginBtn_Click 事件中将复杂的操作分离出去以减轻UI的负担, 这很好完全没有问题.
但是问题在于 Me.Invoke(dh)这里,若是ChkLogin里面仍然是大规模的操作呢 你的代码就又变成将很复杂的操作扔给了UI, 当然会出现窗体无法拖动的情况了.
解决办法很简单, 很多种. 将ChkLogin()里的操作直接放在DelegateLogin()里面吧 me.invoke仅仅只是做简单的轻量的刷新之类的操作就好了.
希望能帮上你的忙.
但是问题在于 Me.Invoke(dh)这里,若是ChkLogin里面仍然是大规模的操作呢 你的代码就又变成将很复杂的操作扔给了UI, 当然会出现窗体无法拖动的情况了.
解决办法很简单, 很多种. 将ChkLogin()里的操作直接放在DelegateLogin()里面吧 me.invoke仅仅只是做简单的轻量的刷新之类的操作就好了.
希望能帮上你的忙.
追问
你是从哪里复制过来的回答吧哥们,跟我的问题都不一致
展开全部
Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
Dim t1 As Threading.Thread = New Threading.Thread(AddressOf temp)
t1.start()
t1.join()
End Sub
Public Sub temp()
PictureBox5.Show()
Threading.Thread.Sleep(100)
Form6.Show()
Me.Close()
End Sub
行吗?
还有doevents过时了。。。要用Threading.Thread.sleep()。(其实根本不用doevents)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询