有没有办法每三秒钟运行一个程序?我知道你可以让定时器每n毫秒运行一次,但不是每隔m秒运行一次.对于一个非常基本的示例,假装我想要两个函数都添加到整数值.一个函数将每三秒运行两次,并将5加到某个值.第二个函数将100添加到相同的值,但只运行一秒,而另一个不运行.这有意义吗?
Timer timer = new Timer();
TimerTask task = new TimerTask(){
public void run(){
for (int i = 0; i <= 30; i++){
lblTimer.setText("" + i);
}
}
};
timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec
Run Code Online (Sandbox Code Playgroud)
我创建了一个计时器,当我按下按钮时启动,上面是运行的代码.任何人都可以帮我创建一个数到30的计时器吗?现在当我运行它时,在标签中设置文本"30",但我希望它从0开始并计数到30.
我Timer在Window Form Application上创建了新变量:
intervalTime = new System.Timers.Timer();
intervalTime.Interval = 5000;
intervalTime.Enabled = true;
Console.WriteLine(intervalTime.Enabled.ToString());
intervalTime.Elapsed += new ElapsedEventHandler(intervalTime_Elapsed);
Console.WriteLine(intervalTime.Enabled.ToString());
Run Code Online (Sandbox Code Playgroud)
我Timer将每隔5秒执行一次ElapsedEvent:
void intervalTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//Do something....
}
Run Code Online (Sandbox Code Playgroud)
但ElapsedEvent根本不开火.我应该如何解雇呢?我检查intervalTime.Enabled的true.
我之前找到了这个问题,但它没有解决我的问题
我需要一个计时器用于我正在构建的游戏,它基本上做的是启动一个事件,当我点击游戏时每秒移动并对象一个正方形.现在要么我让游戏顺其自然(游戏结束或对象移出界限)或再次按下游戏,计时器似乎会触发对象比以前更快地移动等等,每次都越来越快我重新启动时间.
private void playButtonMouseClicked(java.awt.event.MouseEvent evt) {
/*code*/
timer = new Timer(timerSpeed, new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
/*code that ends with something that calls timer.stop()*/
}
}
});
if(timer.isRunning()) //in case I don't let the game stop the timer
timer.stop();
timer.start();
}
Run Code Online (Sandbox Code Playgroud)
我检查过timer.getDelay(),延迟没有改变,它保持不变,但我可以看到每次箭头移动越来越快.我正在使用jPanels和带有和图标的标签来显示网格和移动对象.
有任何想法吗?
我有一个倒数计时器,每当我快速按F5时,计时器就会冻结。我猜这是因为页面在setInterval之前重新加载。我正在寻找一种重新加载页面的方法,同时保持计时器运行,正在发生什么情况是在setInterval可能完成之前页面重新加载
<h3 style="color:#000000" align="center">
Time Remaining : <span id='timer'></span>
</h3>
<script type="text/javascript" src="jquery-1.11.3.min.js"></script>
<script>
//define your time in second
var c = localStorage.getItem("timer");
if(c == null)c = 3600;
var t;
timedCount();
function timedCount()
{
var hours = parseInt( c / 3600 ) % 24;
var minutes = parseInt( c / 60 ) % 60;
var seconds = c % 60;
var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" …Run Code Online (Sandbox Code Playgroud) 我目前正在全天候定期运行一个函数.
setInterval( function(){ do_this(); } , 1000*60);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不是我想要的.我希望这个功能只能在早上9点到18点之间定期运行.该功能不应在这些时间之外运行.如何在node.js中完成?是否有方便的模块或功能可供使用?
我写了这个应该运行10次然后停止的Swing计时器.但是,编译器说Timer没有初始化.我不想初始化它,我不需要(这里是一个没有初始化并且工作正常的例子).怎么了?
public Enhanced() {
Timer picTimer ;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 422);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblTimer = new JLabel();
lblTimer.setBounds(361, 67, 61, 16);
contentPane.add(lblTimer);
ActionListener a = new ActionListener() {
int time=0;
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("hello");
if (++time > 10) {
picTimer.stop();
System.exit(0);
}
}
};
picTimer = new Timer(1000,a);
}
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
private void TimePlayedTimer_Start()
{
timePlayedStr = "00:00:00";
timePlayed = new DispatcherTimer();
timePlayed.Tick += timePlayedTimer_Tick;
timePlayed.Interval = new TimeSpan(0, 0, 0, 1);
timePlayed.Start();
}
void timePlayedTimer_Tick(object sender, object e)
{
TimeSpan ts = TimeSpan.Parse(timePlayedStr);
ts = ts.Add(TimeSpan.FromSeconds(1));
timePlayedStr = ts.ToString();
}
Run Code Online (Sandbox Code Playgroud)
当我调试此行,行,TimeSpan ts就等于"00:00:00"但行后ts = ts.Add(TimeSpan.FromSeconds(1));,将一些如何有属性TotalDays = 2.313232439423,TotalHours = 0.000555555,TotalMilliseconds = 2000而不是添加1到TotalSeconds属性我得到这些属性值返回.
有谁知道我做错了什么?
PS:我只想TimeSpan在每次之后添加第二个tick
在Java中是否有办法在特定时间基于一组天运行特定方法?
比方说我有以下几天:
2015年11月13日至2015年11月15日
时间是上午11点到下午6点.
所以我想要一种方法只在那些时候运行.
我知道计时器任务,但我不认为有一种方法可以设置多天,只在那些时间?在这些时间之后,我希望它在后台停止或运行,并且在更新这些日期之前不做任何事情.
我应该提到由于项目规范,我不能使用Quartz.有没有其他方法或这是不可能的?
使用Visual Studio 2015和Visual C#Windows应用程序。
我需要一个计时器来清空主线程中的队列,因为某些UI组件已被修改。我编码为:
public Form1()
{
InitializeComponent();
Q = new ConcurrentQueue<amsg>();
timer = new System.Timers.Timer(100);
timer.Elapsed += timer_Elapsed;
timer.Enabled = true;
}
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
clsUdpMsg msg;
while (Q.TryDequeue(out msg)) handleRx(msg);
}
Run Code Online (Sandbox Code Playgroud)
但是Elapsed事件在工作线程中执行...?
如果在设计时在主窗体上放置一个计时器,则生成的原型会略有不同:
private void timer1_Tick(object sender, EventArgs e)
{
amsg msg;
while (Q.TryDequeue(out msg)) handleRx(msg);
}
Run Code Online (Sandbox Code Playgroud)
但这确实在主线程上下文中执行。
问题扩展到以这种方式创建计时器的任何线程。我以为在线程中创建的计时器会在同一线程上下文中执行经过的事件。我想念什么吗?
快速编辑:我看到这些是System.Timers.Timer和Windows.Forms.Timer不同的计时器。那么-如何可靠地创建将在创建计时器的线程中执行的计时器?
timer ×10
c# ×4
java ×4
javascript ×2
swing ×2
.net ×1
countdown ×1
delay ×1
jquery ×1
netbeans-8 ×1
node.js ×1
performance ×1
setinterval ×1
timer-jobs ×1
timertask ×1