在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#语言。
由于您的错误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);