gpt4 book ai didi

vb.net - 由于后台工作导致主窗体卡住

转载 作者:行者123 更新时间:2023-12-01 14:02:53 27 4
gpt4 key购买 nike

场景:我正在制作一个连接到 MySQL 数据库以确认帐户和密码的登录表单。

尝试:我正在尝试在表单连接并从数据库获取结果时显示动画加载 gif 和加载文本。

到目前为止:所以我使用了后台 worker :登录按钮:

Private Sub LoginBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoginBtn.Click
PictureBox2.Visible = True
Label6.Visible = True
BackgroundWorker1.RunWorkerAsync()
End Sub

后台 worker DoWork:

 Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
AccessControl()
End Sub


Private Sub AccessControl()
If Me.InvokeRequired Then
Me.Invoke(New MethodInvoker(AddressOf AccessControl))
Else
con.Open()
Dim user, pass As String
user = UserNameBox.Text
pass = Crypt(PasswordBox.Text)
cmd = New MySqlCommand("SELECT * FROM users WHERE Name ='" + user + "' And Password ='" + pass + "'", con)
dr = cmd.ExecuteReader
End If
End Sub

后台RunWorkerCompleted:

 Private Sub backgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If (dr.Read()) Then
FadingForm()

Else
PictureBox2.Visible = False
Label6.Visible = False
WrnPnl.Visible = True
WrnLbl.Visible = True
WrnPnlImg.Visible = True
PasswordBox.Text = ""
UserNameBox.Text = ""
UserNameBox.Focus()
End If

con.Close()
End Sub

应该发生什么:当用户单击登录按钮时输入凭据后,动画加载 gif 和加载文本应该出现并且后台进程应该启动,如果凭据正确 FadingForm() 应该被触发,否则其他部分应该。

问题:问题是当我在输入正确的凭据后按下登录按钮时,加载 gif 和文本显示出来,但表单卡住。该过程完成后,主窗体恢复正常。我确信表单会卡住,因为动画 gif 停止动画并且所有控件都无法使用。我不知道可能的原因是什么或如何解决。

如有任何帮助,我们将不胜感激。非常感谢!

最佳答案

您在后台工作程序中做的第一件事就是将所有工作强制返回到 UI 线程。这就是它挂起您的 UI 的原因。

If Me.InvokeRequired Then
Me.Invoke(New MethodInvoker(AddressOf AccessControl))

您应该只调用对 UI 的访问,而不是 sql 工作。由于您需要访问用户名和密码字段,因此您应该将它们作为参数传递,或者在后台工作程序开始之前将它们从它们的控件中拉出并放入局部变量中。这样您就可以访问它们的值而无需调用任何东西。

声明用户并在表单级别传递,并在点击事件中执行此操作。

    user = UserNameBox.Text
pass = Crypt(PasswordBox.Text)

关于vb.net - 由于后台工作导致主窗体卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24001302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com