标签: timer

非重入C#计时器

f()每次都试图调用一个方法t,但如果之前的调用f()尚未完成,请等到它完成.

我已经阅读了一些关于可用计时器的内容,但找不到任何好的方法来做我想要的,除了手动编写所有内容.关于如何实现这一目标的任何帮助都将受到赞赏,但我担心我可能无法找到使用计时器的简单解决方案.

为了澄清,如果t是一秒,并f()运行我在下面写的任意持续时间,那么:

Step  Operation    Time taken
1     wait         1s
2     f()          0.6s
3     wait         0.4s (because f already took 0.6 seconds)
4     f()          10s
5     wait         0s (we're late)
6     f()          0.3s
7     wait         0.7s (we can disregard the debt from step 4)
Run Code Online (Sandbox Code Playgroud)

请注意,此计时器的性质是f()重新进入时不需要安全,并且此处的大小为1的线程池就足够了.

c# multithreading timer

10
推荐指数
2
解决办法
3961
查看次数

安卓倒数计时器的小时/分钟选择器

我正在尝试实现像倒计时器那样在0发出警报的东西.我希望能够设置在计时器关闭之前等待的时间,我想知道是否有提供的UI小部件或元素这种选择功能.

基本上,android有没有类似iPhone的选择旋转轮?或者是否有某种类型的时间戳可以选择任意数小时和分钟?android中的timepicker小部件有一个不必要的AM/PM标签.

我是否需要实现自己的自定义UI才能实现此目的?

user-interface android timer picker countdown

10
推荐指数
2
解决办法
8776
查看次数

Python:每隔x分钟交替执行一次功能

假如我有以下四个功能:

def foo():
    subprocess.Popen('start /B someprogramA.exe', shell=True)

def bar():
    subprocess.Popen('start /B someprogramB.exe', shell=True)

def foo_kill():
    subprocess.Popen('taskkill /IM someprogramA.exe')

def bar_kill():
    subprocess.Popen('taskkill /IM someprogramB.exe')
Run Code Online (Sandbox Code Playgroud)

如何将foo和bar功能交替运行,比如30分钟?含义:第一个30分钟 - 跑步foo,第二个30分钟 - 跑步bar,第三个30分钟 - 跑步foo,依此类推.每次新的运行应该"杀死"前一个线程/ func.

我有一个倒数计时器线程,但不知道如何"交替"这些功能.

class Timer(threading.Thread):
    def __init__(self, minutes):
        self.runTime = minutes
        threading.Thread.__init__(self)


class CountDownTimer(Timer):
    def run(self):
        counter = self.runTime
        for sec in range(self.runTime):
            #do something           
            time.sleep(60) #editted from 1800 to 60 - sleeps for a minute
            counter -= 1

timeout=30
c=CountDownTimer(timeout)
c.start()
Run Code Online (Sandbox Code Playgroud)

编辑:我的解决方案与尼古拉斯奈特的投入......

import …
Run Code Online (Sandbox Code Playgroud)

python multithreading function timer alternate

10
推荐指数
2
解决办法
856
查看次数

用Java创建重复计时器提醒

我希望有一个类每2秒更改一次自己的私有变量.我知道,如果我做了类似的事情

import java.util.Timer;
//...
Timer timer;
//...
timer.schedule(new ChangeSomething(), 2000);
Run Code Online (Sandbox Code Playgroud)

它将ChangeSomething()在2秒后执行,有没有办法告诉它每2秒做一次,或者,如果我放进去ChangeSomething()

    timer.schedule(new ChangeSomething(), 2000);
Run Code Online (Sandbox Code Playgroud)

它会起作用吗?

另一方面,究竟做timer.cancel()了什么?

java timer

10
推荐指数
3
解决办法
2万
查看次数

线程或不线程

我正在构建一个相当简单的应用程序,它执行一些单独的HTTPWebRequests,每个都在自己的计时器上.我不太可能需要一次运行3个以上的单独请求.

如果在另一个HTTPWebRequest正在进行时触发Timer Tick,那么Timer Tick触发的事件会发生什么?我应该添加线程吗?

c# multithreading timer

10
推荐指数
1
解决办法
576
查看次数

WinRT替换System.Environment.TickCount

System.Environment.TickCount的WinRT替代品是什么?

c# timer windows-8 windows-runtime

10
推荐指数
1
解决办法
2787
查看次数

SignalR - 检查用户是否仍然连接

我有一个方法集线器,称为客户端.此方法启动一个带有委托的计时器,该委托每10秒运行一次.如果在没有人连接到集线器的情况下继续运行此委托是没有意义的,我想在重新计划之前检查是否有任何用户仍然从委托内部连接.有没有办法做到这一点?

c# asp.net timer signalr signalr-hub

10
推荐指数
2
解决办法
2万
查看次数

每小时执行一次方法

我想每小时执行一个方法.我写了一些代码,但这还不足以实现我的目标.下面的代码每60分钟工作一次.

public void Start()
{
    System.Threading.Timer timerTemaUserBilgileri = new System.Threading.Timer(new System.Threading.TimerCallback(RunTakip), null, tmrTemaUserBilgileri, 0);
}

public void RunTakip(object temauserID)
{
    try 
    {
        string objID = "6143566557387";
        EssentialMethod(objID);
        TimeSpan span = DateTime.Now.Subtract(lastRunTime);
        if (span.Minutes > 60)
        {
            tmrTemaUserBilgileri = 1 * 1000;
            timerTemaUserBilgileri.Change(tmrTemaUserBilgileri, 0);
        }
        else
        {
            tmrTemaUserBilgileri = (60 - span.Minutes) * 60 * 1000;
            timerTemaUserBilgileri.Change(tmrTemaUserBilgileri, 0);
        }
        watch.Stop();
        var elapsedMs = watch.ElapsedMilliseconds;
    }
    catch (Exception ex)
    {
        timerTemaUserBilgileri.Change(30 * 60 * 1000, 0);
        Utils.LogYaz(ex.Message.ToString());
    }
}

public void EssentialMethod(objec …
Run Code Online (Sandbox Code Playgroud)

c# timer

10
推荐指数
3
解决办法
5万
查看次数

如何在iOS 7中超过180秒的后台运行NSTimer?

我试过这个但是在iOS 7和Xcode 4.6.2中的工作时间不超过180秒.请帮我

    UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
        UIApplication *app = [UIApplication sharedApplication];
       bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
            [app endBackgroundTask:bgTask];
        }];
        NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:20 target:self   selector:@selector(timerMethod) userInfo:nil repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
     -(void) timerMethod{

     NSLog(@"in timerMethod");
    }
Run Code Online (Sandbox Code Playgroud)

timer nstimer ios

10
推荐指数
1
解决办法
3万
查看次数

Node.js:setInterval的替代方案,对游戏循环更精确

我的设置是一个多人游戏,带有用于异步传输数据的套接字.

现在,由于游戏的本质,我有一个游戏循环,应该每隔500毫秒进行一次玩家更新(例如位置,外观......).

var self = this;

this.gameLoop = setInterval(function()
{   
    for (var i = 0; i < playerSize; i++)
    {
        self.players.get(i).update();
    };
}, 500);
Run Code Online (Sandbox Code Playgroud)

我目前正在使用setInterval,但当我做了大约200个连接的基准时,setInterval漂移到1000毫秒而不是500毫秒,这使得整个游戏看起来很滞后.不幸的是,对于少量玩家而言,它还不够准确.(请注意,更新调用最多只需要大约100毫秒)

所以在研究之后,似乎没有其他选择产生只处理定时机制的过程?还是有其他选择吗?

任何人都已经做过这个,或者可以提供一些基本的想法/解决方案来解决这个问题?

完整代码:

Game.prototype.start = function()
{
    var average = 0;
    var cycles = 10;
    var prev = Date.now();

    this.thread = setInterval(function()
    {       
        console.log("interval time="+(Date.now() - prev));
        prev = Date.now();

        var s = Date.now();

        // EXECUTE UPDATES
    for (var i = 0; i < playerSize; i++)
    {
        self.players.get(i).update();
    };

        average += …
Run Code Online (Sandbox Code Playgroud)

javascript timer game-loop node.js

10
推荐指数
1
解决办法
4747
查看次数