在c#中使用列表值创建计时器,并分配这些计时器来执行查询

本文关键字:计时器 分配 查询 执行 列表 创建 | 更新日期: 2023-09-27 18:09:54

我有一个列表,我想使用这个列表值来创建定时器。并且还想使用这些计时器来执行2个MySql查询。这是我的代码,

    Timer timer;        
    List<uint> _dataValues = new List<uint>();     
    private void button1_Click(object sender, EventArgs e)
    {
        string myconstring = "SERVER=localhost;" + "DATABASE=alicosms;" + "UID=root;" + "PASSWORD=;";
        MySqlConnection mycon = new MySqlConnection(myconstring);
        string sql = "SELECT flag FROM sms_data_bankasia group by flag";
        MySqlCommand comd = mycon.CreateCommand();
        comd.CommandText = sql;
        mycon.Open();
        MySqlDataReader dtr = comd.ExecuteReader();
        count = 0;          
        while (dtr.Read())
            {                   
                _dataValues.Add(dtr.GetUInt32(0));
            }
        dtr.Close();                                  

    }
    void PrepareTimers(List<uint> dataValues)
    {
        foreach (uint dataValue in _dataValues)
        {
           timer = new Timer(TimerAction, dataValue, 1000, 0);
        }
    }
    void TimerAction(object flag)
    {
        string myconstring = "SERVER=localhost;" + "DATABASE=alicosms;" + "UID=root;" + "PASSWORD=;";
        MySqlConnection mycon = new MySqlConnection(myconstring);
        MySqlCommand cmd = new MySqlCommand("SELECT * FROM sms_data_bankasia WHERE flag = @flag", mycon);
        MySqlParameter param = new MySqlParameter();
        param.ParameterName = "@flag";
        param.Value = flag;
        cmd.Parameters.Add(param);

    }    

在PrepareTimers部分提供错误。我还想在"TimerAction"中添加另一个查询。那该怎么办,有人能帮我吗?我使用的是vs2005 .net和c#语言。

在c#中使用列表值创建计时器,并分配这些计时器来执行查询

由于您的错误syas No overload for method 'Timer' takes '4' arguments,我猜您正在使用System.Timers.Timer类,其中没有构造函数需要4个参数。

根据您的代码,您需要使用:

System.Threading.Timer

编辑(根据注释):为了克服这种命名冲突,您可以为nemespace创建一个别名,如

using ThreadingTimer = System.Threading.Timer;

并使用ThreadingTimer或使用完全限定名,如:

System.Threading.Timer = new System.Threading.Timer(TimerAction, dataValue, 1000, 0);