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

时间:2011-09-26 06:58:06

标签: c# list timer

我有一个列表,我想使用此列表值来创建timer.And还想使用这些计时器来执行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”中添加另一个查询。那么该怎么办?任何人都可以帮助我吗?我使用的是VS 2005.net和C#语言。

1 个答案:

答案 0 :(得分:0)

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

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

System.Threading.Timer

编辑(根据评论):为了克服此命名冲突,您可以为网址空间创建别名,例如

using ThreadingTimer = System.Threading.Timer;

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

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