请教一下论坛高手,
我有一个system.timers.timer [] timer 数组,数组个数是动态的。
如何生成动态的事件。例如我想的结果这样的,每个timer[]执行不同的事件。。避免重复调用一个事件造成堵塞或时间判断上的延时。int count=5;//COUNT的值是动态的
for (int i = 0; i < count; i++)
{
int tag = i; System.Timers.Timer[] timer = new System.Timers.Timer[count];
timer[tag]= new System.Timers.Timer();
timer[tag].Interval = 1000;
timer[tag].AutoReset = true; ;
timer[i].Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
{
Timers_Elapsed[i](sender, e, tag);
}; timer[tag].Start()
}
private void Timers_Elapsed[i](object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}
private void Timers_Elapsed[i](object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}private void Timers_Elapsed[i](object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}private void Timers_Elapsed[i](object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}
我有一个system.timers.timer [] timer 数组,数组个数是动态的。
如何生成动态的事件。例如我想的结果这样的,每个timer[]执行不同的事件。。避免重复调用一个事件造成堵塞或时间判断上的延时。int count=5;//COUNT的值是动态的
for (int i = 0; i < count; i++)
{
int tag = i; System.Timers.Timer[] timer = new System.Timers.Timer[count];
timer[tag]= new System.Timers.Timer();
timer[tag].Interval = 1000;
timer[tag].AutoReset = true; ;
timer[i].Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
{
Timers_Elapsed[i](sender, e, tag);
}; timer[tag].Start()
}
private void Timers_Elapsed[i](object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}
private void Timers_Elapsed[i](object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}private void Timers_Elapsed[i](object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}private void Timers_Elapsed[i](object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}
timer[0].Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
{
Timers_Elapsed0(sender, e, tag);
};
timer[1].Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
{
Timers_Elapsed1(sender, e, tag);
};private void Timers_Elapsed0(object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}
private void Timers_Elapsed1(object sender, System.Timers.ElapsedEventArgs e,int tag)
{执行代码}
private System.Windows.Forms.Timer[] dt;
private void GetList()
{
dt = new System.Windows.Forms.Timer[listView1.Items.Count];
for (int n = 0; n < listView1.Items.Count; n++)
{
dt[n] = new System.Windows.Forms.Timer();
dt[n].Interval = int.Parse(listView1.Items[n].SubItems[1].Text) * 1000 * 60;
dt[n].Enabled = true;
dt[n].Tag = listView1.Items[n].SubItems[0].Text ;
dt[n].Tick+=new EventHandler(Form1_Tick);
}
} private void Form1_Tick(object sender, EventArgs e)
{ Thread _donethread = new Thread(new ParameterizedThreadStart(DoneWork));
_donethread.IsBackground = true;
_donethread.Start((sender as System.Windows.Forms.Timer).Tag); }
private void DoneWork(object tablename)
{
if (statusBar1.InvokeRequired)
{
statusBar1.Invoke(new DoneWorkdelegate(DoneWork), tablename);
}
else
{
try
{
string insertsql = string.Empty;
statusBar1.Text = "正在刷新数据....";
string _tablename = tablename as string;
switch (_tablename)
{
}
}
可以创建的时候加time.name
System.timers.timer 没有name属性
在创建Time的时候给Tag属性复值 作标识
public delegate void Timers_Elapsed(object sender, System.Timers.ElapsedEventArgs e, int tag);
private Timers_Elapsed creater = new Timers_Elapsed((obj, e, tag) =>
{
//执行代码
}); private System.Timers.ElapsedEventHandler InitElapsedEventHandler(int i)
{
return new System.Timers.ElapsedEventHandler(delegate(object sender, System.Timers.ElapsedEventArgs e)
{
var te = new Timers_Elapsed(creater);
te(sender, e, i);
});
}timer[i].Elapsed += InitElapsedEventHandler(i);
{
return new System.Timers.ElapsedEventHandler(delegate(object sender, System.Timers.ElapsedEventArgs e)
{
creater(sender, e, i);
});
}