首页 > 解决方案 > 计时器导致程序卡住(Windows 窗体),引发“调试器未正确安装”错误

问题描述

希望大家都好。

我正在尝试创建一个连接到 MySQL 数据库的实时仪表板。SQL 数据库使用“INSERT”命令从外部命令更新,以记录新的传感器读数。

我有 6 个标签来显示实时传感器读数。我的目标是每 1 秒更新一次显示的值。因此,我想使用我不熟悉的计时器配置。我查找了源代码和此站点,以创建一些代码来实现该目的,但是,我没有成功。

这是我的代码的一部分:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Windows.Forms;


namespace LVAD_Form
{
    public partial class Veri_Ekrani : Form
    {
        public Veri_Ekrani()
        {
            InitializeComponent();   
        }

        private void Veri_Ekrani_Load(object sender, EventArgs e)
        {
            Timer timer = new Timer();
            timer.Interval = (3 * 1000); // 10 secs
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();

        }

        private void timer_Tick(object sender, EventArgs e)
        {
            String username = "bla";
            String password = "blabla";

            MySqlConnection connection = new MySqlConnection("host=blabla;username=" + username + ";password=" + password + ";");

            String strSQL = "SELECT * FROM haberlesme_verisi WHERE sayici=(SELECT MAX(sayici) FROM haberlesme_verisi);";

            var cmd = new MySql.Data.MySqlClient.MySqlCommand(strSQL, connection);

            connection.Open();

            var dr = cmd.ExecuteReader();

            if (dr.HasRows)
            {
                dr.Read();// Get first record.
                // indices 0 and 1 are for timestamp and counter.
                labelVoltaj.Text = dr.GetString(4);
                labelAkim.Text = dr.GetString(5);
                labelDevir.Text = dr.GetString(6);

                labelBasinc.Text = dr.GetString(2);
                labelAkis.Text = dr.GetString(3);
            }
            else
            {
                labelVoltaj.Text = "Veri Alınamadı";
                labelAkim.Text = "Veri Alınamadı";
                labelDevir.Text = "Veri Alınamadı";

                labelBasinc.Text = "Veri Alınamadı";
                labelAkis.Text = "Veri Alınamadı";
            }
            dr.Close();// Close reader.
            connection.Close();// Close connection.
        }

        private void msg_Box_TextChanged(object sender, EventArgs e)
        {

        }

        private void chart2_Click(object sender, EventArgs e)
        {

        }

        private void chart2_Click_1(object sender, EventArgs e)
        {

        }

        private void chart1_Click(object sender, EventArgs e)
        {

        }
    }
}

当我运行脚本/表单时,程序在大约 3 秒后卡住了。然后我收到错误“调试器未正确安装。运行安装程序以安装或修复调试器”。此时,进程内存图表也卡在 87% 左右。

我还注意到,当我关闭错误消息时,我看到我的脚本始终位于语句中:

var dr = cmd.ExecuteReader();

如果代码结构不佳,我很抱歉。我有一个(与学校无关的)作业,其截止日期很快,这是我第一次使用 C# 和 Windows 窗体设计器。我没有太多时间掌握基础知识——这绝对不是一个好方法,但现在时间对我来说非常重要。

标签: c#timerwindows-forms-designer

解决方案


推荐阅读