当前位置:编程学习 > C#/ASP.NET >>

定时器每隔一秒触发button!!!

定时器每隔一秒触发button。我写的代码如下,有点问题:


 public info()
        {

            InitializeComponent();
            System.Timers.Timer t = new System.Timers.Timer(Convert.ToDouble(10000));
            t.Elapsed += new System.Timers.ElapsedEventHandler(button1_Click);
            t.AutoReset = true ;
            t.Enabled = true;
        }
             --------------------编程问答-------------------- 不好意思多打了一个零:
System.Timers.Timer t = new System.Timers.Timer(Convert.ToDouble(1000)); --------------------编程问答-------------------- 定时器每隔一秒触发button。我写的代码如下,有点问题:


 public info()
  {

  InitializeComponent();
  System.Timers.Timer t = new System.Timers.Timer(Convert.ToDouble(1000));
  t.Elapsed += new System.Timers.ElapsedEventHandler(button1_Click);
  t.AutoReset = true ;
  t.Enabled = true;
  }
--------------------编程问答-------------------- 多一个0? --------------------编程问答-------------------- 这个我知道啊,放到论坛里面不小心多写了一个零,改成正确的,还是有点问题。 --------------------编程问答-------------------- 顶起。。。。。。 --------------------编程问答-------------------- 什么问题啊 --------------------编程问答-------------------- 顶起。。。。。。。。。。。。 --------------------编程问答-------------------- 本来一个button事件每秒只往数据库里面写入一条数据,但是用了定时器促发button后每一秒钟写了好几条数据进去。 --------------------编程问答-------------------- 这种提问方式挺烦人的,不管你出现什么问题(比如编译根本过不去),你都应该认真说明问题本身。上csdn不是为了逗闷子、给那些热心的人下套的。 --------------------编程问答-------------------- 不会吧,那你限制一下在button中作一个记时如果上次和这次不有30秒钟的就不给触发 --------------------编程问答-------------------- 晕 这什么问题啊  干嘛要每隔一秒执行按钮啊  这样是为了什么啊 --------------------编程问答-------------------- 你怎么知道一秒钟写进好几条数据啊,有没有时间测试啊
引用 8 楼 gt138138 的回复:
本来一个button事件每秒只往数据库里面写入一条数据,但是用了定时器促发button后每一秒钟写了好几条数据进去。
--------------------编程问答-------------------- 顶起。。。。。。 --------------------编程问答-------------------- 楼主 有不有试我的方法的 --------------------编程问答-------------------- 数据库那个表里面 专门有获取时间的字段。可以查看的 --------------------编程问答-------------------- 你那个方法怎么去弄啊 --------------------编程问答-------------------- 1.定时器一秒动作一次是没有问题。
2.一秒内数据库被操作好几次,数据库操作放在Button事件中,如果插入这段代码没有问题的话,也是应该没有问题的。请检查,插入数据库那段代码,是不是有循环代码等因素导致的多次插入。 --------------------编程问答-------------------- 你先把定时器时间间隔设置时间长点看看呢. --------------------编程问答-------------------- 没有必要定时器每隔一秒触发Button
直接把Button事件里面的代码放到定时器的事件里面就可以了 何必要在中间加一个Button列。。。。。 --------------------编程问答-------------------- static DateTime dtbutton1 =DateTime.MinValue;
public void Onbutton1_Click(object sender, EventArgs e){
 if(dtbutton1 >DateTime.Now.AddSeconds(-30))
    return;
   ...
}
这样如果还不会,不有办法了 --------------------编程问答-------------------- 恩  是有一个 foreach的循环,那怎么去解决啊:

 foreach (System.Xml.XmlNode node in doc.GetElementsByTagName("DeliverMessage"))
            {
            string strInsert1 = "insert into sc_duanxin( haoma,neirong )  values(  '" + node["Desttermid"].FirstChild.Value + "','" + node["Content"].FirstChild.Value + "'  )";
            SqlCommand SCSelectAll1 = new SqlCommand(strInsert1, SCcon);
            SCSelectAll1.ExecuteNonQuery();
                    }


                             } --------------------编程问答-------------------- 就拖一个timer控件  然后去写timer_tick事件 不是很简单么 干吗非要自己定义一个 --------------------编程问答-------------------- 加个锁 --------------------编程问答-------------------- 我把循环去掉了,还是一秒写入了好多的数据 --------------------编程问答-------------------- 检查按钮事件,在那里控制插入的。
--------------------编程问答-------------------- 不用想这么多,我的方法已经足以保证不会出现这样的问题了 --------------------编程问答-------------------- 检查下你与数据库交互的地方,可能你进行多次与数据库交互了;
另外,看看你定时器里的操作,是不是多次触发了这个事件 --------------------编程问答-------------------- 定起。。。。。 --------------------编程问答-------------------- csdsuper  大兄弟,用你的方法,数据库里面还是写入了好多的数据啊 --------------------编程问答--------------------
LZ 有解决吗,可以发我一份么, 邮箱no0357@163.com,谢谢 --------------------编程问答-------------------- timer 控件的延时不对
--------------------编程问答-------------------- 当我把时间由一秒 改为 以一分钟的时候,存储到数据库里面的数据是对的 --------------------编程问答-------------------- 设置为一秒 就不对了 --------------------编程问答-------------------- 学习了!!!!!!!!! --------------------编程问答-------------------- 既然是时间触发的,为什么还要加个按钮上去呢?直接把数据库操作的代码加到tick里面不就行了么?
--------------------编程问答-------------------- 既然是时间触发的,为什么还要加个按钮上去呢?直接把数据库操作的代码加到tick里面不就行了么?
--------------------编程问答-------------------- 调试中看 你插入数据的方法执行了几次 就知道在数据库加了多少条? 也许是sql语句和存储过程的条件不对  这样造成的!! --------------------编程问答-------------------- LOL... --------------------编程问答-------------------- 仔细检查你的代码  单步执行   看看是不是函数之间的调用什么的出了问题   --------------------编程问答--------------------  出现插入多条数据的可能有二,
1. timer触发多次
2. 一次调用button插入多条数据,
check一下,问题就解决了 --------------------编程问答-------------------- 直接上源码,一看就知道了。 --------------------编程问答-------------------- LZ 很强大 --------------------编程问答-------------------- 顶起。。。。 --------------------编程问答-------------------- 顶。。。。
--------------------编程问答-------------------- 看来这个帖子都要沉下去了。。问题还没解决。。。看来只有重新再发一遍了 --------------------编程问答-------------------- 手动点击按钮执行,看插入的数据是不是只有一条。先排除不是按钮插入数据的问题 --------------------编程问答-------------------- 连续剧 --------------------编程问答--------------------
引用 33 楼 gt138138 的回复:
设置为一秒 就不对了


一分钟是对的 1秒钟不对 说明你的Button点击事件在1秒钟之内不能完成
然后因为这一秒钟的操作还没有完成 下一秒又开始了 所以数据库中的数据不对 --------------------编程问答-------------------- 不懂```` --------------------编程问答-------------------- 不是设置一分钟呀,一秒触发一次真是的处理不过来呀 --------------------编程问答-------------------- public info()
  {

  InitializeComponent();
  System.Timers.Timer t = new System.Timers.Timer(Convert.ToDouble(1000));
  t.Elapsed += new System.Timers.ElapsedEventHandler(button1_Click);
  t.SynchronizingObject = button1;//加这句就好了
  t.AutoReset = true ;
  t.Enabled = true;
  }
--------------------编程问答-------------------- 你这个是每个一秒注册一个button的事件 啊!但是不会触发 啊!你直接调用事件button1_Click不就行了,弄得这么麻烦! --------------------编程问答-------------------- 10000好像是10秒啊! --------------------编程问答-------------------- 这种情况下,1秒内肯定是执行了多次该语句,单步调试一下,看看从哪开始重复执行了,然后再找原因 --------------------编程问答-------------------- 你把BUTTON里面的事件写到timer的ticker事件里面不就行了 还要这般折磨人 --------------------编程问答-------------------- 支持楼上,加那个button实在是画蛇添足
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,