既然有 taskTime.Interval = i * 1000;
你用Interval除1000不就是你的 i 吗
#2
额 我这只是测试 其实这个for循环是测试用的。实际是要从数据库里取数据动态创建timer
#3
用tag存你的参数,在下面用
#4
你不如用多线程做
就算创建了多个timer,其实还是都在主线程里啊,这样做有任何意义?
#5
for (int i = 0; i < 3; i++)
{
new System.Timers.Timer().Elapsed += (sender, e) =>
{
var index = i;
...
};
}
#6
如果方便传递参数,可以自己继承timer,写一个自己的timer类即可
class MyTimer : System.Timers.Timer
{
int num;
public int GetNum()
{
return num;
}
}
#7
既然有 taskTime.Interval = i * 1000;
你用Interval除1000不就是你的 i 吗
额 我这只是测试 其实这个for循环是测试用的。实际是要从数据库里取数据动态创建timer
用tag存你的参数,在下面用
System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
#8
可以把taskTime_Elapsed放到一个放状态的类中:
class Worker
{
public Worker(int i)
{
this.i = i;
}
int i;
public void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//我这里想获取到上面传过来的参数
Console.WriteLine(i);
System.Timers.Timer t = (System.Timers.Timer)sender;
t.Enabled = false;
t.Close();
}
}
for (int i = 1; i <= 3; i++)
{
taskTime.Elapsed += new Worker(i).taskTime_Elapsed;
}
当然也可以用C#的闭包 (Closure),不过基本原理也大致相同。
#9
5楼lineages朋友的例子就是‘闭包’。例子里面有个错误,局部变量要放在闭包’外面:
for (int i = 0; i < 3; i++)
{
var index = i; //放在闭包’外
new System.Timers.Timer().Elapsed += (sender, e) =>
{
Console.WriteLine(index); // 使用closure
};
}
#10
System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
怎么可能,你试了吗?
有任何变量会没有tag属性的?反正暂时我是没见过.
#11
for (int i = 0; i < 3; i++)
{
new System.Timers.Timer().Elapsed += (sender, e) =>
{
var index = i;
...
};
}
这样不行!!刚刚测试了
#12
System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
怎么可能,你试了吗?
有任何变量会没有tag属性的?反正暂时我是没见过.
没有tag
#13
for (int i = 0; i < 3; i++)
{
new System.Timers.Timer().Elapsed += (sender, e) =>
{
var index = i;
...
};
}
这样不行!!刚刚测试了
听我的,继承一个timer
#14
for (int i = 0; i < 3; i++)
{
new System.Timers.Timer().Elapsed += (sender, e) =>
{
var index = i;
...
};
}
这样不行!!刚刚测试了
听我的,继承一个timer
你能帮我写下简单的例子么 。。。就我上面的代码!!嘿嘿,谢谢哈
#15
System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
怎么可能,你试了吗?
有任何变量会没有tag属性的?反正暂时我是没见过.
没有tag
自己随手测试了一下,确实没有.
是我脑残了
#16
5楼lineages朋友的例子就是‘闭包’。例子里面有个错误,局部变量要放在闭包’外面:
for (int i = 0; i < 3; i++)
{
var index = i; //放在闭包’外
new System.Timers.Timer().Elapsed += (sender, e) =>
{
Console.WriteLine(index); // 使用closure
};
}
谢谢提醒,但是4.5可以不用临时变量了。
#17
class MyTimer : System.Timers.Timer
{
int num;
public int GetNum()
{
return num;
}
public void SetNum(int value)
{
num = value;
}
}
void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
MyTimer t = (MyTimer)sender;
t.Enabled = false;
t.Close();
}
private void button1_Click(object sender, EventArgs e)
{
//string id = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
//var y = Assembly.Load(id);
for (int i = 1; i <= 3; i++)
{
MyTimer taskTime = new MyTimer();
//我这里想把i传到taskTime_Elapsed里 然后方法里使用!因为是多个,全局参数不能用
taskTime.Interval = i * 1000;
taskTime.SetNum(i);
taskTime.Enabled = true;
taskTime.AutoReset = true;
taskTime.Elapsed += new System.Timers.ElapsedEventHandler(taskTime_Elapsed);
}
}
#18
class MyTimer : System.Timers.Timer
{
int num;
public int GetNum()
{
return num;
}
public void SetNum(int value)
{
num = value;
}
}
void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
MyTimer t = (MyTimer)sender;
t.Enabled = false;
t.Close();
}
private void button1_Click(object sender, EventArgs e)
{
//string id = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
//var y = Assembly.Load(id);
for (int i = 1; i <= 3; i++)
{
MyTimer taskTime = new MyTimer();
//我这里想把i传到taskTime_Elapsed里 然后方法里使用!因为是多个,全局参数不能用
taskTime.Interval = i * 1000;
taskTime.SetNum(i);
taskTime.Enabled = true;
taskTime.AutoReset = true;
taskTime.Elapsed += new System.Timers.ElapsedEventHandler(taskTime_Elapsed);
}
}
谢谢! 非常感谢! 我先测试下
#19
class MyTimer : System.Timers.Timer
{
int num;
public int GetNum()
{
return num;
}
public void SetNum(int value)
{
num = value;
}
}
void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
MyTimer t = (MyTimer)sender;
t.Enabled = false;
t.Close();
}
private void button1_Click(object sender, EventArgs e)
{
//string id = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
//var y = Assembly.Load(id);
for (int i = 1; i <= 3; i++)
{
MyTimer taskTime = new MyTimer();
//我这里想把i传到taskTime_Elapsed里 然后方法里使用!因为是多个,全局参数不能用
taskTime.Interval = i * 1000;
taskTime.SetNum(i);
taskTime.Enabled = true;
taskTime.AutoReset = true;
taskTime.Elapsed += new System.Timers.ElapsedEventHandler(taskTime_Elapsed);
}
}
既然有 taskTime.Interval = i * 1000;
你用Interval除1000不就是你的 i 吗
#2
既然有 taskTime.Interval = i * 1000;
你用Interval除1000不就是你的 i 吗
额 我这只是测试 其实这个for循环是测试用的。实际是要从数据库里取数据动态创建timer
#3
既然有 taskTime.Interval = i * 1000;
你用Interval除1000不就是你的 i 吗
额 我这只是测试 其实这个for循环是测试用的。实际是要从数据库里取数据动态创建timer
用tag存你的参数,在下面用
#4
你不如用多线程做
就算创建了多个timer,其实还是都在主线程里啊,这样做有任何意义?
#5
for (int i = 0; i < 3; i++)
{
new System.Timers.Timer().Elapsed += (sender, e) =>
{
var index = i;
...
};
}
#6
如果方便传递参数,可以自己继承timer,写一个自己的timer类即可
class MyTimer : System.Timers.Timer
{
int num;
public int GetNum()
{
return num;
}
}
#7
既然有 taskTime.Interval = i * 1000;
你用Interval除1000不就是你的 i 吗
额 我这只是测试 其实这个for循环是测试用的。实际是要从数据库里取数据动态创建timer
用tag存你的参数,在下面用
System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
#8
可以把taskTime_Elapsed放到一个放状态的类中:
class Worker
{
public Worker(int i)
{
this.i = i;
}
int i;
public void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//我这里想获取到上面传过来的参数
Console.WriteLine(i);
System.Timers.Timer t = (System.Timers.Timer)sender;
t.Enabled = false;
t.Close();
}
}
for (int i = 1; i <= 3; i++)
{
taskTime.Elapsed += new Worker(i).taskTime_Elapsed;
}
当然也可以用C#的闭包 (Closure),不过基本原理也大致相同。
#9
5楼lineages朋友的例子就是‘闭包’。例子里面有个错误,局部变量要放在闭包’外面:
for (int i = 0; i < 3; i++)
{
var index = i; //放在闭包’外
new System.Timers.Timer().Elapsed += (sender, e) =>
{
Console.WriteLine(index); // 使用closure
};
}
#10
System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
怎么可能,你试了吗?
有任何变量会没有tag属性的?反正暂时我是没见过.
#11
for (int i = 0; i < 3; i++)
{
new System.Timers.Timer().Elapsed += (sender, e) =>
{
var index = i;
...
};
}
这样不行!!刚刚测试了
#12
System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
怎么可能,你试了吗?
有任何变量会没有tag属性的?反正暂时我是没见过.
没有tag
#13
for (int i = 0; i < 3; i++)
{
new System.Timers.Timer().Elapsed += (sender, e) =>
{
var index = i;
...
};
}
这样不行!!刚刚测试了
听我的,继承一个timer
#14
for (int i = 0; i < 3; i++)
{
new System.Timers.Timer().Elapsed += (sender, e) =>
{
var index = i;
...
};
}
这样不行!!刚刚测试了
听我的,继承一个timer
你能帮我写下简单的例子么 。。。就我上面的代码!!嘿嘿,谢谢哈
#15
System.Timers.Timer这个定时器不是form拖进来的 没有tag属性!!!
怎么可能,你试了吗?
有任何变量会没有tag属性的?反正暂时我是没见过.
没有tag
自己随手测试了一下,确实没有.
是我脑残了
#16
5楼lineages朋友的例子就是‘闭包’。例子里面有个错误,局部变量要放在闭包’外面:
for (int i = 0; i < 3; i++)
{
var index = i; //放在闭包’外
new System.Timers.Timer().Elapsed += (sender, e) =>
{
Console.WriteLine(index); // 使用closure
};
}
谢谢提醒,但是4.5可以不用临时变量了。
#17
class MyTimer : System.Timers.Timer
{
int num;
public int GetNum()
{
return num;
}
public void SetNum(int value)
{
num = value;
}
}
void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
MyTimer t = (MyTimer)sender;
t.Enabled = false;
t.Close();
}
private void button1_Click(object sender, EventArgs e)
{
//string id = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
//var y = Assembly.Load(id);
for (int i = 1; i <= 3; i++)
{
MyTimer taskTime = new MyTimer();
//我这里想把i传到taskTime_Elapsed里 然后方法里使用!因为是多个,全局参数不能用
taskTime.Interval = i * 1000;
taskTime.SetNum(i);
taskTime.Enabled = true;
taskTime.AutoReset = true;
taskTime.Elapsed += new System.Timers.ElapsedEventHandler(taskTime_Elapsed);
}
}
#18
class MyTimer : System.Timers.Timer
{
int num;
public int GetNum()
{
return num;
}
public void SetNum(int value)
{
num = value;
}
}
void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
MyTimer t = (MyTimer)sender;
t.Enabled = false;
t.Close();
}
private void button1_Click(object sender, EventArgs e)
{
//string id = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
//var y = Assembly.Load(id);
for (int i = 1; i <= 3; i++)
{
MyTimer taskTime = new MyTimer();
//我这里想把i传到taskTime_Elapsed里 然后方法里使用!因为是多个,全局参数不能用
taskTime.Interval = i * 1000;
taskTime.SetNum(i);
taskTime.Enabled = true;
taskTime.AutoReset = true;
taskTime.Elapsed += new System.Timers.ElapsedEventHandler(taskTime_Elapsed);
}
}
谢谢! 非常感谢! 我先测试下
#19
class MyTimer : System.Timers.Timer
{
int num;
public int GetNum()
{
return num;
}
public void SetNum(int value)
{
num = value;
}
}
void taskTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
MyTimer t = (MyTimer)sender;
t.Enabled = false;
t.Close();
}
private void button1_Click(object sender, EventArgs e)
{
//string id = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
//var y = Assembly.Load(id);
for (int i = 1; i <= 3; i++)
{
MyTimer taskTime = new MyTimer();
//我这里想把i传到taskTime_Elapsed里 然后方法里使用!因为是多个,全局参数不能用
taskTime.Interval = i * 1000;
taskTime.SetNum(i);
taskTime.Enabled = true;
taskTime.AutoReset = true;
taskTime.Elapsed += new System.Timers.ElapsedEventHandler(taskTime_Elapsed);
}
}