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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;//停止定时器,以免浪费效率

参考技术A 设置 timer时间间隔为5秒就可以了
如果用textbox的话是失去焦点事件,而不是change事件
参考技术B 你可以加个bool值判断
bool flag = false;

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

时间控件的tick事件加多判断即可
if(!flag)

//执行下一个事件

时间控件的internal设置为5000,即5秒执行
参考技术C 可以设置个泛型对象,用来存储等到赋值的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#中如何保证每隔一段时间执行一个动作,即实现刷新功能?

参考技术A 可以通过使用定时器来完成:\\x0d\\x0a添加一个timer1,为timer1的Tick事件写程序,具体实现方法,给个例子:\\x0d\\x0a int n = 0;//用于计数,此程序改变的也是这个值\\x0d\\x0a private void timer1_Tick(object sender, EventArgs e)//每1000毫秒执行一次\\x0d\\x0a \\x0d\\x0a n++;\\x0d\\x0a MessageBox.Show("你好,这是第"+n+"次打招呼哦");//弹出对话框告诉你\\x0d\\x0a if (n >= 4)//不能无限的循环下去,当弹出3个对话框了,就停\\x0d\\x0a \\x0d\\x0a timer1.Enabled = false;//此属性为false,timer1_Tick事件就不会执行了\\x0d\\x0a \\x0d\\x0a \\x0d\\x0a \\x0d\\x0a\\x0d\\x0a private void Form1_Load(object sender, EventArgs e)\\x0d\\x0a \\x0d\\x0a timer1.Enabled = true; //设置为truetimer1_Tick实践就会执行,开始计时\\x0d\\x0a timer1.Interval = 1000; //设置timer1的timer1_Tick实践执行周期为1000毫秒\\x0d\\x0a \\x0d\\x0a运行周期、运行次数和执行动作都是任意更改的^^~

以上是关于C# timer 持续5秒钟无动作,执行的主要内容,如果未能解决你的问题,请参考以下文章

c#中如何保证每隔一段时间执行一个动作,即实现刷新功能?

关于C#中的timer控件!

java Timer定时器管理类

jbpm timer实现自动提醒审批功能

持续动作

防抖(debounce)和节流(throttle)