我有一个列表,我想使用此列表值来创建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#语言。
答案 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);