vb.net 多线程 窗体 假死

代码如下代码如下:PrivateSubbtnLogin_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs... 代码如下

代码如下:

Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Dim chkl As New Login
Dim th As New Threading.Thread(AddressOf chkl.ChkLogin)
chkl.UserName = UserName.Text.Trim.ToString
chkl.Pwd = Pwd.Text.Trim.ToString
th.Start()
UserName.Enabled = False
Pwd.Enabled = False
btnLogin.Enabled = False
LoginInfo.Text = "系统正在拉取用户数据,请稍后……"
End Sub

Delegate Sub SFM()
Sub ShowfrmMain()
If Me.InvokeRequired Then
Dim dh As New SFM(AddressOf ShowfrmMain)
Me.Invoke(dh)
Else
frmMain.Show()
Me.Close()
End If
End Sub

Class Login
Public UserName As String
Public Pwd As String

Function OpenDB()
Dim Conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=DataBase/DFZJOADB.MDB")
Try
Conn.Open()
Return Conn
Catch ex As Exception
Msg(ex.ToString)
End Try
End Function
Sub ChkLogin()
Dim sql As String = "select * from UserInfo where UserName='" & UserName & "'"
Dim DRL As New OleDbCommand(sql, OpenDB)
Dim ReadLoginData As OleDbDataReader = DRL.ExecuteReader()
ReadLoginData.Read()
If ReadLoginData.HasRows Then
If Pwd = ReadLoginData(2).ToString.Trim Then
System.Threading.Thread.Sleep(3000)
frmLogin.ShowfrmMain()
Else
Msg("您输入的密码错误!")
Exit Sub
End If
Else
Msg("没有该用户数据!")
Exit Sub
End If

End Sub
End Class

但是这样窗体就会假死,拖动不了,怎么解决这个问题呢?
展开
 我来答
FantasyChump
2010-11-02 · TA获得超过3288个赞
知道大有可为答主
回答量:2127
采纳率:0%
帮助的人:2246万
展开全部
并没有看出什么地方可能导致程序假死,这排版也太乱了.不妨调试一下程序,当出现你说的"假死"后暂停一下程序,看看线程都卡在哪里.
另外,从设计上来看,你这里并不需要多线程操作.
fifaboy
推荐于2020-12-08 · TA获得超过3219个赞
知道大有可为答主
回答量:3046
采纳率:0%
帮助的人:1713万
展开全部
System.Threading.Thread.Sleep(3000)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式