gpt4 book ai didi

mysql - VB.net MySQL 连接检查不工作/缓慢

转载 作者:行者123 更新时间:2023-11-29 13:31:20 24 4
gpt4 key购买 nike

我有一个程序,其主要功能是每隔 x 时间从 MySQL 数据库中提取数据并相应地调整 GUI。

我有一个由两部分组成的问题,首先发生的事情是我的 GUI 在后台加载极其缓慢,同时正在尝试连接,您可以逐字地看到每个标签/框/图像逐一加载,直到 MySQL检查完成。

一个拙劣的修复方法是在函数之前添加一个 me.Hide() ,然后在显示检查结果后使其重新出现。您能看一下代码吗?是否会将 MySQL 检查添加到函数中,然后在 Form1_Load help 上调用它?

第二部分是我的 MySQL 连接检查器似乎不起作用,现在我的主机正在接受远程 MySQL session ,并且它似乎确实考虑连接一段时间...这是一个很好的 6/7 秒在出现连接错误消息之前。

我几乎遵循指南并自己编写了代码,我理解每个部分,但我认为也许我的 ConnectionString 无效。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MaximizeBox = False

Dim conn As MySqlConnection

conn = New MySqlConnection
conn.ConnectionString = "Server=50.28.x.x; Port=3306; User id=xxx_admin; password=xxxx; Database=xxx_software; Connect Timeout=60;"

Try
conn.Open()

Catch myerror As MySqlException
MsgBox("There was an error connecting to the MySQL Database")
Label42.ForeColor = Color.Red
Label42.Text = "ERROR"
Timer1.Stop()
End Try

Timer1.Start()
Label37.Text = Now.ToShortTimeString()

End Sub

最佳答案

.Connect() 是一个阻塞调用,因此您不应将其放入处理 Load 事件的子函数中。例如将其放入 Activated 中并检查它是否已运行。您可能还想研究一下自 VS2012 起正式可用的 async/await。尽管将任何可能导致异常的内容放入 Load 中仍然不是一个好主意,因为此阶段的异常处理存在问题,该问题发生在运行 32 位版本代码的 64 位计算机上(以保持很简单)。

基本思想是让 UI-Thread(处理表单的重绘等)免于“繁重”工作,这意味着使用某种“线程”时您将获得最佳结果。而 async/await 是一种非常简单的方法,因为它保持了通常的程序流程。

Public Class Form1

Private InitDone As Boolean = False

Private Async Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated

If Not InitDone Then
InitDone = True
' simulate some blocking call
Await Task.Run(Sub() Threading.Thread.Sleep(10000))
Me.Text = "Ready to go"
End If

End Sub

下课

Async 是一个装饰器,它只是“允许”您在方法中使用await 关键字。这是必需的,因为 await 不是 C# 中的保留字,否则可能会破坏旧代码。Await 意味着任务被调度后,UI 线程将继续并可以重绘、处理事件等。当内部方法完成时(通常在其自己的线程中),UI 线程“跳转”到 Await 之后的行并执行该代码。这是一种保持应用响应速度并保持(看似)线性流程的简单方法。

当然,还有更多关于 async/await 的内容,您可能需要投入一些时间来适应它,但我认为投入任何一分钟都是值得的!

关于mysql - VB.net MySQL 连接检查不工作/缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19419673/

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