C# 如何间隔一定的时间执行一次代码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 如何间隔一定的时间执行一次代码?相关的知识,希望对你有一定的参考价值。

如题,我想间隔一段时间然后执行一次代码,请大家帮帮忙,谢谢!
如果可以的话,真希望能有代码段,这样更能看明白。谢谢,最好是C#的。 settimeout()setinterval()好像不能用,555555我急的,谁能帮帮忙,谢谢了

C#间隔一定的时间执行一次代码:
1、可以使用Timer定时器,设置指定的时间执行一次

在C#里关于定时器类就有3个
1、定义在System.Windows.Forms里
2、定义在System.Threading.Timer类里
3、定义在System.Timers.Timer类里
  System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console Application(控制台应用程序)无法使用。
  System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET Thread Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。

参考地址:
1、http://blog.csdn.net/kankankankan2222/article/details/8249602
2、http://blog.csdn.net/hugoandpig/article/details/7743452
参考技术A C#的winform中有Timer控件,可以定时执行指定的代码。
控件的属性中有个设置时间间隔的,忘了是什么名字,默认1000的那个,单位是毫秒。
双击Timer控件在事件里写要在设定的时间间隔后执行的代码就可以了,
Public void 循环执行的代码()



Timer双击事件

循环执行的代码();
本回答被提问者采纳
参考技术B 可以使用定时线程

system.threading.timer创建
参考技术C js有settimeout()setinterval()c#记得也能用记混了

java中如何控制时间间隔?

比如说我写坦克大战,只允许在发射炮弹后一定时间间隔后才能再次发射炮弹,要怎么控制?
请教各位高手,我还是菜鸟,希望能解释得详细一点,谢谢~

我们可以使用Timer和TimerTask类在java中实现定时任务,详细说明如下:

1、基础知识
java.util.Timer
一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。此类是线程安全的:多个线程可以共享单个 Timer 对象而无需进行外部同步。
java.util.TimerTask
由 Timer 安排为一次执行或重复执行的任务。

2、示例代码
该示例实现这样一个功能,在系统运行期间,每30分钟,系统自动检查连接池中的可用连接数,并输出到日志中。
首先创建一个需要定时执行的任务类,这个任务类需要继承TimerTask,然后重写run()方法,run()方法体中的代码就是定时需要执行的操作,在本demo中,就是获取连接池中当前可用连接数,并输出到日志中,具体实现代码如下:
public class TaskAvailableConnectNumber extends TimerTask
private Logger log = Logger.getLogger(TaskAvailableConnectNumber.class);
private ConnectionPool pool=ConnectionPool.getInstance();
@Override
publicvoid run()
log.debug("当前连接池中可用连接数"+pool.getAvailableConnectNumber());


下面定义一个监听器,负责在应用服务器启动时打开定时器,监听器需要实现ServletContextListener接口,并重写其中的contextInitialized()和contextDestroyed()方法,代码如下:
public class OnLineListener implements ServletContextListener
private Logger log = Logger.getLogger(OnLineListener.class);
Timer timer = null;
//在应用服务器启动时,会执行该方法
publicvoid contextInitialized(ServletContextEvent arg0)
//创建一个定时器,用于安排需要定时执行的任务。
timer = new Timer();
//为定时器安排需要定时执行的任务,该任务就是前面创建的任务类TaskAvailableConnectNumber,并指定该任务每30分钟执行一次。
timer.schedule(new TaskAvailableConnectNumber(), 0, 30*60*1000);
log.debug("启动定时器");

//应用服务器关闭时,会执行该方法,完成关闭定时器的操作。
public void contextDestroyed(ServletContextEvent arg0)
if(timer!=null)
timer.cancel();//关闭定时器
log.debug("-----定时器销毁--------");



监听器要想正常运行,需要在web.xml文件中进行配置,配置信息如下:
<!-- 监听器配置开始 -->
<listener>
<listener-class>
cn.sdfi.listen.OnLineListener
</listener-class>
</listener>
<!-- 监听器配置结束 -->
以上步骤完成后,一个简单的定时器就算开发完成了。
参考技术A 例如发射炮弹的类class Paodan,有个静态变量为time,发射炮弹时,记录当前时间.
下次在调用发射炮弹的方法时,判断当前时间和time的时间间隔是否符合你的要求,不符合就不发射

大致就是这样了本回答被提问者采纳
参考技术B 不是那样的,你要等发射出的炮弹碰到物体会消失,消失后就可以了 ,这个控制可以分为两类:
1、用坐标来控制炮弹是否已经出了定义的界面
2、中间碰到东西会触发事件,用这个触发事件来控制可以发射下一颗炮弹。
这是很简单的语法和逻辑了吧
参考技术C 时间=replace(formatdatetime(rs("addtime"),2),"-","/")
参考技术D 启动线程

以上是关于C# 如何间隔一定的时间执行一次代码?的主要内容,如果未能解决你的问题,请参考以下文章

C++怎么能间隔一定的时间执行指定的代码

JavaScript 计时器

计划计时器每月执行一次 - C#

java中如何控制时间间隔?

c#中如何保证每隔一段时间执行一个动作。

js 如何控制文本域输入内容在一定间隔时间段才触发事件查询相关数据