| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 581 人关注过本帖
标题:使用Timer来替代
只看楼主 加入收藏
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:9 
使用Timer来替代
在“button1”事件被触发后3000ms,如何使用timer替代“button2_Click”,来进行自动查询“Table_2”。请高手解答!以下为部分源码
(在不对2张表进行关联或将2张表进行合并的前提下)
using System.Data;
...
using System.timers;


namespace 001
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string sqlstr = "select * from Table_1 where name='" + TextBox1.Text.Trim() + "'";
            SqlConnection cn = new SqlConnection("Data Source=wang;Initial Catalog=InfoTables;Integrated Security=True");
            SqlDataAdapter dap = new SqlDataAdapter(sqlstr, cn);
            ...
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string sqlstr = "select * from Table_2 where size='" + TextBox2.Text.Trim() + "'";
            SqlConnection cn = new SqlConnection("Data Source=wang;Initial Catalog=InfoTables;Integrated Security=True");
            SqlDataAdapter dap = new SqlDataAdapter(sqlstr, cn);
            ...
        }
搜索更多相关主题的帖子: void private public 如何 
2012-12-06 19:12
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
button1_Click末尾执行button2click就可以
2012-12-06 19:49
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 2楼 hjywyj
。。。。。。。。。。。

[ 本帖最后由 urick 于 2012-12-9 11:39 编辑 ]
2012-12-06 20:11
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
收藏
得分:20 
用System.Threading.Timer, 好处在于可以随时更改计时器间隔。
程序代码:
using System;
using System.Threading;
using System.Windows.Forms;
using Timer = System.Threading.Timer;
namespace WindowsFormsApplication
{
    public partial class FormMain : Form
    {
        private readonly Timer _timer;
        public FormMain()
        {
            InitializeComponent();
            _timer = new Timer(TimerProcess, null, Timeout.Infinite, Timeout.Infinite);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //之前的代码
            _timer.Change(3000, 30000); //3秒后开始启动,而后每间隔30秒
        }
        private void TimerProcess(object o)
        {
            //查询
        }
    }
}


为提高中华编程水平而奋斗
2012-12-06 20:25
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 4楼 mmxo
先试下去  谢谢

[ 本帖最后由 urick 于 2012-12-6 21:54 编辑 ]
2012-12-06 21:29
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 4楼 mmxo
但每个timer只运行1次,又该如何去写代码

[ 本帖最后由 urick 于 2012-12-9 11:38 编辑 ]
2012-12-06 22:06
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
收藏
得分:0 
在Timer触发后的处理过程中写_timer.Change(Timeout.Infinite, Timeout.Infinite);这样就可以了,不会再次触发了。

为提高中华编程水平而奋斗
2012-12-07 01:38
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 7楼 mmxo
已经搞定 但出现一个小问题  在程序运行中提示“跨进程非法”,虽然不影响测试,有什么办法吗,版主?
2012-12-07 20:02
mmxo
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:13
帖 子:189
专家分:1090
注 册:2012-11-7
收藏
得分:0 
怎么会跨进程呢?

为提高中华编程水平而奋斗
2012-12-08 16:11
urick
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-12-6
收藏
得分:0 
是的 我再研究下  但关于本帖的问题已经得到了解决 感谢版主!
2012-12-09 11:37
快速回复:使用Timer来替代
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050120 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved