MySqlConnection conn = new MySqlConnection(connStr);
MySqlCommand cmd = new MySqlCommand(sql, conn);
conn.Open();
MySqlDataReader rd = cmd.ExecuteReader();
while(rd.Read())
{
zcname = rd["cname"].ToString();
t1.Interval = 1000;
t1.Tick += new EventHandler(tt_Tick);
t1.Start();
}
我的意图是读出所有记录,每读出一条记录就执行一下大括号里的程序,可是我用while好像总是不正常,每次只能读出zcname,下面的不执行,请问为什么啊??
13 个解决方案
#1
既然是只要执行方法,那为何使用timer?
而且每条数据都绑定t1.Tick += new EventHandler(tt_Tick);
那每次事件累加,不会出问题吗?
而且每条数据都绑定t1.Tick += new EventHandler(tt_Tick);
那每次事件累加,不会出问题吗?
#2
是不执行tt_Tick
#3
每次只能读出zcname
-》因为你只rd["cname"]了,没有rd其它的列名称。
-》因为你只rd["cname"]了,没有rd其它的列名称。
#4
是没有执行t1.Tick += new EventHandler(tt_Tick);
#5
1、同一个timer,你多次绑定Tick事件,估计会有问题
2、你可以把timer的Tick事件作为方法,每次调用
3、你认为代码木有执行,可以打个断点,单步调试下
2、你可以把timer的Tick事件作为方法,每次调用
3、你认为代码木有执行,可以打个断点,单步调试下
#6
如果我用if语句读出的一条记录,则
t1.Interval = 1000;
t1.Tick += new EventHandler(tt_Tick);
t1.Start();
运行正常,如果用while语句,则这个定时器就不起作用了,为什么啊???
t1.Interval = 1000;
t1.Tick += new EventHandler(tt_Tick);
t1.Start();
运行正常,如果用while语句,则这个定时器就不起作用了,为什么啊???
#7
+= 是什么意思啊?
#8
因为你不断地执行 t1.Start 重新开始定时。
#9
你的 zcname 总是被丢弃,这样做毫无意义。如果你仅仅只需要最后一条记录的 cname 值,那么直接查询最后一条记录就好了。如果你需要先把所有的 cname 值查询出来,也要把有关定时器的内容放到 while 循环后边,而循环中只应该是把 cname 值保存在一个集合里边。
你的代码,基本上,在保存数据(zcname)方面的流程就没有做到,更别说是异步的定时器访问数据了。你应该自己调试一下,甚至是先把精力放到 想想该测试和调试什么内容上。
#10
为什么不用MySqlAdapter 呢?
#11
t1.Tick -= new EventHandler(tt_Tick);
t1.Tick += new EventHandler(tt_Tick);
可以保证只挂了一个事件,如果之前没有设置过,-=也不会出错
t1.Tick += new EventHandler(tt_Tick);
可以保证只挂了一个事件,如果之前没有设置过,-=也不会出错
#12
你得先告诉我们你写的这些代码是为了干什么?
#13
最好的办法就是单步执行 F11
#1
既然是只要执行方法,那为何使用timer?
而且每条数据都绑定t1.Tick += new EventHandler(tt_Tick);
那每次事件累加,不会出问题吗?
而且每条数据都绑定t1.Tick += new EventHandler(tt_Tick);
那每次事件累加,不会出问题吗?
#2
是不执行tt_Tick
#3
每次只能读出zcname
-》因为你只rd["cname"]了,没有rd其它的列名称。
-》因为你只rd["cname"]了,没有rd其它的列名称。
#4
是没有执行t1.Tick += new EventHandler(tt_Tick);
#5
1、同一个timer,你多次绑定Tick事件,估计会有问题
2、你可以把timer的Tick事件作为方法,每次调用
3、你认为代码木有执行,可以打个断点,单步调试下
2、你可以把timer的Tick事件作为方法,每次调用
3、你认为代码木有执行,可以打个断点,单步调试下
#6
如果我用if语句读出的一条记录,则
t1.Interval = 1000;
t1.Tick += new EventHandler(tt_Tick);
t1.Start();
运行正常,如果用while语句,则这个定时器就不起作用了,为什么啊???
t1.Interval = 1000;
t1.Tick += new EventHandler(tt_Tick);
t1.Start();
运行正常,如果用while语句,则这个定时器就不起作用了,为什么啊???
#7
+= 是什么意思啊?
#8
因为你不断地执行 t1.Start 重新开始定时。
#9
你的 zcname 总是被丢弃,这样做毫无意义。如果你仅仅只需要最后一条记录的 cname 值,那么直接查询最后一条记录就好了。如果你需要先把所有的 cname 值查询出来,也要把有关定时器的内容放到 while 循环后边,而循环中只应该是把 cname 值保存在一个集合里边。
你的代码,基本上,在保存数据(zcname)方面的流程就没有做到,更别说是异步的定时器访问数据了。你应该自己调试一下,甚至是先把精力放到 想想该测试和调试什么内容上。
#10
为什么不用MySqlAdapter 呢?
#11
t1.Tick -= new EventHandler(tt_Tick);
t1.Tick += new EventHandler(tt_Tick);
可以保证只挂了一个事件,如果之前没有设置过,-=也不会出错
t1.Tick += new EventHandler(tt_Tick);
可以保证只挂了一个事件,如果之前没有设置过,-=也不会出错
#12
你得先告诉我们你写的这些代码是为了干什么?
#13
最好的办法就是单步执行 F11