C# timer 持续5秒钟无动作,执行

想实现的是,现在是不断有数据赋值给X,Y,当无数据持续达到5秒钟的时候,执行下个命令。主要是那个持续五秒的部分怎么实现不知道,只要有动作,时间就刷新。

举个例子就是手写输入法,写的时候不会发送,停笔一定时间后就发送出去。

备注:
X,Y的类型请自行修改
赋值请用SetX(),与SetY()
timer的Interval属性值越小对时间的精确性越大
修改提交事件时间,请核对 timer的Interval属性 与 timer1_Tick事件中的判断值
timer1 默认不启动(timer1.Enabled = false),间隔100毫秒(timer1.Interval=100)

int timeNum;//统计进行赋值操作后停歇了几个单位量的时间(timer的Interval属性)
int x;
int y;
public void SetX(int _x)
{
x = _x;
TimeHandle();
}
public void SetY(int _y)
{
y = _y;
TimeHandle();
}
private void TimeHandle()//事件处理
{
timeNum = 0;//计时清0
if (!timer1.Enabled)//如果定时器为停止的,启动定时器
{
timer1.Enabled = true;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
timeNum++;
//定时器的循环时间为100毫秒,5秒即 5000/100
if (timeNum > 50)
{
//这里执行你要的提交事件
timer1.Enabled = false;//停止定时器,以免浪费效率
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-23
设置 timer时间间隔为5秒就可以了
如果用textbox的话是失去焦点事件,而不是change事件
第2个回答  2012-02-23
你可以加个bool值判断
bool flag = false;

if(X!=""&&Y!="")
flag=true;

时间控件的tick事件加多判断即可
if(!flag)
{
//执行下一个事件
}
时间控件的internal设置为5000,即5秒执行
第3个回答  2012-02-23
可以设置个泛型对象,用来存储等到赋值的X,Y,当把赋值过的X,Y里的值添加到泛型中后,将X,Y设置为-1,-1,用一个timer类计时,如果超过5秒,X,Y的值还是为原来的值,那就发送。

List<Point> list=new List<Point>;
int x,y,time;
private void timer1_Tick(object sender, EventArgs e)
{
time++;
if(time<5&&x!=-1&y!=-1)
{
time = 0;
.......
list.Add();
x=-1;y=-1;
}
else
{
send
}
}

只是一个大概的思路!没具体测试,请参考!

C# timer 持续5秒钟无动作,执行
if (!timer1.Enabled)\/\/如果定时器为停止的,启动定时器 { timer1.Enabled = true;} } private void timer1_Tick(object sender, EventArgs e){ timeNum++;\/\/定时器的循环时间为100毫秒,5秒即 5000\/100 if (timeNum > 50){ \/\/这里执行你要的提交事件 timer1.Enabled = false;\/\/停止定时...

C# 让一个界面5秒钟后消失,并显示另一个界面
1、你要在什么时候(事件)启动Timer,比如当按钮按下后,延时5秒显示下一个窗体;2、是否要在Timer执行的过程中显示进度,比如还有多长时间;3、你的另一个界面与当前界面的关系(模式的还是非模式的),如果是模式的一定要先Hide,再show。对于如何使用Timer,建议你自己查一下MSDN,这样印象深刻。

c# 停几秒钟 再执行 ,在线等,谢谢各位!!!
DateTime dt1 = DateTime.Now;while ((DateTime.Now - dt1).TotalMilliseconds < 3000) Application.DoEvents(); 或者如果你的目的是为了等待网页加载完成,就不要限定时间,改为 this.webBrowser1.Navigate(zx_xg_qjbl.load_url);\/\/加载这个url while (true){ if (webBrowser1.ReadyState =...

C#新手关于Timer的代码问题,点击按钮没有反应
就是要指定他每过多少时间执行一次,你这个用法纯粹跟没用计时器一样了,而且也不对,你要显示时间,可以把计时器设置为每秒执行一次,这样自然每次执行都是过了一秒钟了,你在用这个逻辑来写代码才行,你那个写法也根本没法计时,每次循环的间隔时间比一秒可是小很多了,根本没法按秒计时。

VC#里,如何实现几秒钟后关闭当前窗口并显示下一个窗口。
显示另一个窗体 { MainForm mf = new MainForm();mf.Show();} private void timer1_Tick(object sender, EventArgs e) \/\/把timer控件的Interval属性设为5000,就是让它5秒执行一次 { this.Close();}窗体淡入淡出也很简单,,窗体的Opacity属性就是用来控制窗体的透明度的额 ...

c#中如何保证每隔一段时间执行一个动作。
使用Timer控件,在它的Tick事件里编写你希望执行的动作,并通过设置interval设置执行此动作的时间间隔,interval时间是以毫秒为单位的,即如果你把interval值设为1000则此动作每间隔1秒钟执行一次。

C# 使用Timer控件设置时间间隔
Timer 控件是为 Windows 窗体环境设计的,用于定期引发事件。通过设置 Interval 属性,可以定义时间间隔长度,单位为毫秒。计时器每经过指定时间间隔便会引发 Tick 事件,允许执行用户自定义的代码。Interval 属性设置计时器开始计时的时间间隔,其值不得小于1。Enabled 属性控制计时器是否启用,为true表示启用...

用C#编程,怎样使执行一段程序后获取当前时间,1分钟后自动执行另一段代码...
可以设置一个全局变量i=1,设置timer控件的触发时间为1000(1秒钟),在i=1时,执行完第一段程序后,每过一秒,i++,当i=7时,执行第二段程序就是。至于你说的时间的加减可以用DateTime.AddMinute(1)加一分钟,得到一分钟之后的时间。

【C#】按钮和timer 冲突,只运行按钮,等按钮运行完了才运行timer
如果你所说timer2是每10毫秒钟运行一次,它一定是执行了,如果是你debug只是看到了程序执行的片面过程,而不是全面过程,所以你下的结论判断也一定是片面而不准确的。其实timer的debug调试一直以来是程序员头痛的事情,建议你将控制台作为一个日志类型的输出。将button1_click1事件对变量a的变化和timer2对...

C# 要想给一个死循环设置循环时间间隔,每5秒循环一次。
.Net 2.0版本代码如下:(3.5或以上可以考虑使用Task)private Thread thread;private void button1_Click(object sender, EventArgs e){if (thread != null){thread = new Thread(new ThreadStart(Loop));thread.Start();}else{MessageBox.Show("轮检已启动。");}}private void Loop(){while ...

相似回答