标签: timer

我可以更有效地使用 System.Threading.Timer

我正在寻找一些关于使我的代码更高效的建议。我想要做的是让System.Threading.Timer一个每小时左右运行一些工作,这项工作不会很繁重,但我想要一个不占用太多资源的代码。我计划在 Windows 服务中运行此代码。

这是我到目前为止。

class Program
{
    private static Timer timer;

    static void Main(string[] args)
    {
        SetTimer();
    }

    static void SetTimer()
    {
        timer = new Timer(Write);

        var next = DateTime.Now.AddHours(1);

        var nextSync = (int)(next - DateTime.Now).TotalMilliseconds;

        timer.Change(nextSync, Timeout.Infinite);
    }

    static void Write(object data)
    {
        Console.WriteLine("foo");

        SetTimer(); //Call the SetTimer again for the next run.
    }
}
Run Code Online (Sandbox Code Playgroud)

你们有什么感想?我可以让我的代码更有效率吗?

非常感谢所有建议!

c# windows-services timer autoresetevent

-2
推荐指数
1
解决办法
401
查看次数

系统使用的简单示例。计时器。C# 中的定时器

我阅读了 MSDN 网站和所有内容,但我找不到关于如何引发一个定时事件的简单解释,该事件接受可以是 astring或 的参数double。提供的示例使用ElapsedEventArgs但没有显示出实现我自己对引发事件的论点的好方法。

我的代码(我没有测试过,所以可能是错误的):

private double Pressure_Effect(double p, int t){
        time=(double) t;
        v=(((p/(rho*y))-g)*time)/(1.0+(mu*time/(rho*y*x)));
        return v;

    }
    private void Time_Handle(){
        System.Timers.Timer startTimer=new System.Timers.Timer(70);
        startTimer.Elapsed += new ElapsedEventHandler(Activate_Pressure);

    }
    private void Activate_Pressure(object source, ElapsedEventArgs e){
        pressure=2.5;
        double v=Pressure_Effect(pressure, 70);

    }
Run Code Online (Sandbox Code Playgroud)

我想做的是Activate_Pressure多余的,因为如果我可以直接将事件传递给我Pressure_Effect,但我不知道如何传递。我是 C# 新手,所以请耐心等待。我知道我没有启用计时器,并且此代码中可能缺少其他关键部分,但我只是发布它来澄清我的问题。

c# timer

-2
推荐指数
1
解决办法
4万
查看次数

在QDialog框内通过QLabel显示计时器

我正在制作一个小型GUI应用程序,我在其中创建了一个弹出对话框,提示用户按OK或CANCEL.如果用户按下OK,则会保存一些更改,如果用户按CANCEL,则会丢弃更改.

现在,我想在QLabel对象内的对话框中放一个计时器,它将显示如下 -

在此输入图像描述

在5秒内发送消息,在4秒内发送消息,.. ..在1秒内发送消息.

倒计时结束后,将考虑默认"OK",并保存所有更改.如何在GUI应用程序上实现这样的视觉效果?我的意思是实现一个concole计时器很容易,但如何通过GUI屏幕可视化计时器??? 任何帮助..

c++ qt qt4 timer

-2
推荐指数
1
解决办法
564
查看次数

给此倒数计时器加0

我终于设法使我的24小时非日期可靠的倒数计时器。这样做的目的是,每当有人访问该网站时,倒计时就会开始。问题在于,当任何单位(小时,分钟,秒)达到个位数时,值将按原样显示它们而不是标准时间格式(应按9分钟而不是09分钟显示)。我如何实现一个条件,如果值<= 9会在其前面加上0?

var count = 86400;
var counter = setInterval(timer, 1000); //1000 will  run it every 1 second

function timer() {
  count = count - 1;
  if (count == -1) {
    clearInterval(counter);
    return;
  }

  var seconds = count % 60;
  var minutes = Math.floor(count / 60);
  var hours = Math.floor(minutes / 60);
  minutes %= 60;
  hours %= 60;

  document.getElementById("timer").innerHTML = hours + ":" + minutes + ":" + seconds; // watch for spelling
}
Run Code Online (Sandbox Code Playgroud)
 <span id='timer'></span>
Run Code Online (Sandbox Code Playgroud)

javascript timer countdown

-2
推荐指数
1
解决办法
1626
查看次数

使用Java定期调用方法

我需要定期调用一个方法而不使用Timer类.该方法将由多线程调用.

java multithreading timer executorservice threadpool

-2
推荐指数
1
解决办法
63
查看次数

创建一个可等待的 System.Timers.Timer

我有一个关于创建一个可以等待的计时器的想法,而不是引发事件。我还没有想到任何实际应用,可能不是非常有用的东西,但我想看看它是否至少可以作为练习。这是它的用法:

var timer = new System.Timers.Timer();
timer.Interval = 100;
timer.Enabled = true;
for (int i = 0; i < 10; i++)
{
    var signalTime = await timer;
    Console.WriteLine($"Awaited {i}, SignalTime: {signalTime:HH:mm:ss.fff}");
}
Run Code Online (Sandbox Code Playgroud)

计时器等待 10 次,预期输出为:

等待 0,信号时间:06:08:51.674
等待 1,信号时间:06:08:51.783
等待 2,信号时间:06:08:51.891
等待 3,信号时间:06:08:52.002
等待 4,信号时间:05:108:
等待 5、信号时间:06:08:52.218
等待 6、信号时间:06:08:52.332
等待 7、信号时间:06:08:52.438
等待 8、信号时间:06:08:52.546
等待 06:52.332 信号时间:06:08:52.0608:

在这种情况下,一个简单的await Task.Delay(100)会做同样的事情,但计时器提供了从程序的另一部分控制间隔的灵活性(注意可能的线程安全问题)。

关于实现,我找到了一篇文章,描述了如何使各种事物成为可等待的,例如 a TimeSpan、 an int、 aDateTimeOffset和 a Process。似乎我必须编写一个返回 a 的扩展方法TaskAwaiter …

.net c# timer async-await

-2
推荐指数
1
解决办法
283
查看次数

导入时对 POSIX 函数的未定义引用

我只是用计时器创建一个线程。即使我导入了我需要的所有库。它一直告诉我们没有对函数的引用。

正是它说的,timer_create(...)并且没有timer_settime(...)被引用。

这些是我的进口:

#include <stdio.h>
#include <stddef.h>
#include <sched.h>
#include <sys/mman.h>
#include <sys/time.h>
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#include <time.h>
Run Code Online (Sandbox Code Playgroud)

这是我使用这些函数的线程:

void *Turismo(){
    const struct timespec periodo = {per_turismos_sec,per_turismos_nsec};
    struct sigevent event;
    timer_t timer;
    struct itimerspec its;
    sigset_t sigset;
    int signum;

    event.sigev_notify = SIGEV_SIGNAL;
    event.sigev_signo = SIGRTMAX;
    event.sigev_value.sival_ptr = &timer;

    if(timer_create(CLOCK_MONOTONIC,&event,&timer)!=0) error();

    its.it_interval = periodo;
    its.it_value.tv_sec = 0;
    its.it_value.tv_nsec = 1;

    if(timer_settime(timer,0,&its,NULL)<0) error();
    if(sigemptyset(&sigset)<0) error();
    if(sigaddset(&sigset,SIGRTMAX)<0) error();


    while(1){
        sigwait(&sigset,&signum);
        // ESPECIFICACION DE LA …
Run Code Online (Sandbox Code Playgroud)

c time posix real-time timer

-2
推荐指数
1
解决办法
163
查看次数

Boost计时器无法编译

我正在尝试编译boost计时器,它正在抛出我不明白的错误.它让我觉得计时器库已被打破:

#include <string>
#include <boost/lexical_cast.hpp>
#include <boost/timer/timer.hpp>

int main(int argc, char **argv) {
//  auto_cpu_timer t;
    std::cout << boost::lexical_cast<std::string>(2.0) << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果没有#include for timer.hpp,它就会编译.有了它,它会引发以下错误:

Invoking: GCC C++ Linker
g++ -Lsrc -o "timetest"  ./src/main.o   
./src/main.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
/usr/include/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status
make: *** [timetest] Error 1
Run Code Online (Sandbox Code Playgroud)

这是否意味着计时器库被破坏了?我正在使用Boost 1.49.0.

谢谢!

c++ boost timer

-3
推荐指数
1
解决办法
3569
查看次数

倒数计时器,包括小时,分钟和秒

如何为这个倒计时器设置cookie?当我刷新页面时,cookie应该阻止重置计时器.

<div id="hms">02:00:00</div>
<script type="text/javascript">
    function count() {
        var startTime = document.getElementById('hms').innerHTML;
        var pieces = startTime.split(':');
        var time = new Date();
        time.setHours(pieces[0]);
        time.setMinutes(pieces[1]);
        time.setSeconds(pieces[2]);
        var timedif = new Date(time.valueOf() - 1000);
        var newtime = timedif.toTimeString().split(' ')[0];
        document.getElementById('hms').innerHTML = newtime;
        setTimeout(count,1000);
    }
    count();
</script>
Run Code Online (Sandbox Code Playgroud)

javascript cookies timer

-3
推荐指数
1
解决办法
1777
查看次数

Javascript:我做错了什么?

我的代码不起作用.我究竟做错了什么?

function christmas(){
      var today = new Date();
      var day = today.getDate();
      var month = today.getMonth()+1;
      if(day>=0 && month=12){
        var script = document.createElement('script');
        script.src = "files/snowstorm.js";
        document.getElementsByTagName('head')[0].appendChild(script);
      }
    }
Run Code Online (Sandbox Code Playgroud)

javascript timer

-3
推荐指数
1
解决办法
54
查看次数

Swift 4 Timer.invalidate()返回"表达式解析为未使用的函数"错误

我正在制作一个游戏,其中有一个计时器显示当前会话已经过了多长时间.我已经按照几个教程阅读文档,似乎无法弄清楚为什么会返回错误.这是我的代码:

var timerT = Timer()

func startTimer () {
    self.timerT = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(timeFunc), userInfo: nil, repeats: true)
}

@objc func timeFunc (_ timer: Timer) {
    timeS += 1
}
@IBAction func newGameAction(_ sender: UIButton) {
    Timer.invalidate(timerT)
    game = SetGame()
    updateUIfromModel()
    startTimer()

}
Run Code Online (Sandbox Code Playgroud)

很多Mahalo.

timer ios swift

-3
推荐指数
1
解决办法
286
查看次数