标签: timer

基于计时器的事件触发器

我目前正在开发一个具有特定要求的项目.这些简要概述如下:

  • 从外部Web服务检索数据
  • 数据存储在SQL 2005中
  • 数据通过Web GUI进行操作
  • 与Web服务通信的Windows服务与我们的内部Web UI没有耦合,除了通过数据库.
  • 与Web服务的通信需要基于时间,并且通过Web UI上的用户干预来触发.

用于Web服务通信触发的当前(预生产前)模型是通过存储从手动干预生成的触发请求的数据库表.我真的不想拥有多个触发机制,但希望能够根据调用时间使用触发器填充数据库表.我认为有两种方法可以实现这一目标.

1)调整触发表以存储两个额外参数.一个是"这是基于时间还是手动添加?" 和可空字段来存储时序细节(确切的格式).如果它是一个手动创建的触发器,则在触发器触发时将其标记为已处理,但如果它是定时触发器则不会.
或者
2)创建第二个Windows服务,以定时间隔即时创建触发器.

第二种选择对我来说似乎是一种软糊涂,但是选项1的管理可能很容易变成编程噩梦(你怎么知道表的最后一次轮询是否返回了需要触发的事件,你怎么能阻止它重新触发下次投票)

我很感激,如果有人可以花几分钟时间来帮我决定哪条路线(这两条路线中的一路,或者可能是第三条,未列出的路线).

sql service triggers web-services timer

15
推荐指数
1
解决办法
2384
查看次数

装配CPU频率测量算法

用于测量处理器频率的常用算法有哪些?

cpu assembly system timer

15
推荐指数
3
解决办法
9702
查看次数

WPF:按住单击+双击问题

我必须处理单击和双击WPF应用程序中的按钮并进行不同的反应.不幸的是,在双击时,WPF会触发两次点击事件和双击事件,因此很难处理这种情况.

它试图用计时器解决它,但没有成功...我希望你能帮助我.

让我们看看代码:

private void delayedBtnClick(object statInfo)
{
    if (doubleClickTimer != null)
        doubleClickTimer.Dispose();
    doubleClickTimer = null;

    this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new VoidDelegate(delegate()
    {
        // ... DO THE SINGLE CLICK ACTION
    }));
}

private void btn_Click(object sender, RoutedEventArgs e)
{
    if (doubleClickTimer == null)
        doubleClickTimer = new Timer(delayedBtnClick, null, System.Windows.Forms.SystemInformation.DoubleClickTime, Timeout.Infinite);
        }
    }
}

private void btnNext_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    if (doubleClickTimer != null)
        doubleClickTimer.Change(Timeout.Infinite, Timeout.Infinite);    // disable it - I've tried it with and without this line
        doubleClickTimer.Dispose();
    doubleClickTimer = null;

    //.... …
Run Code Online (Sandbox Code Playgroud)

wpf timer mouseclick-event

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

在QThread中启动QTimer

我试图在特定的线程中启动QTimer.但是,计时器似乎没有执行,也没有打印出来.是与计时器,插槽还是线程有关?

main.cpp中

    #include "MyThread.h"
    #include <iostream>
    using namespace std;

    int main(int argc, char *argv[]) {
        MyThread t;
        t.start();
        while(1);
    }
Run Code Online (Sandbox Code Playgroud)

MyThread.h

    #ifndef MYTHREAD_H
    #define MYTHREAD_H

    #include <QTimer>
    #include <QThread>
    #include <iostream>

    class MyThread : public QThread {
        Q_OBJECT
    public:
        MyThread();
    public slots:
        void doIt();
    protected:
        void run();
    };

    #endif  /* MYTHREAD_H */
Run Code Online (Sandbox Code Playgroud)

MyThread.cpp

    #include "MyThread.h"

    using namespace std;

    MyThread::MyThread() {
        moveToThread(this);
    }

    void MyThread::run() {
        QTimer* timer = new QTimer(this);
        timer->setInterval(1);
        timer->connect(timer, SIGNAL(timeout()), this, SLOT(doIt()));
        timer->start();
    }

    void MyThread::doIt(){
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ qt multithreading timer qthread

15
推荐指数
3
解决办法
4万
查看次数

在Java android中创建一个间隔计时器

我计划使用计时器创建间隔应用程序.它应该是最基本的所以当我理解基础知识时,我将不得不添加更多.我想要实现的是选择一个间隔应该持续的分钟数,但是这个间隔应该多少次.就像持续1分钟并且持续8次的间隔.问题是最好使用哪个计时器?我在Android倒计时器上尝试了我,它似乎工作.但还有另外一个更好吗?

java android timer intervals

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

定时器不会打勾

Windows.Forms.Timer我的代码中有一个,我执行了3次.但是,计时器根本没有调用tick函数.

private int count = 3;
private timer;
void Loopy(int times)
{
    count = times;
    timer = new Timer();
    timer.Interval = 1000;
    timer.Tick += new EventHandler(timer_Tick);
    timer.Start();
}

void timer_Tick(object sender, EventArgs e)
{
    count--;
    if (count == 0) timer.Stop();
    else
    {
        // Do something here
    }
}
Run Code Online (Sandbox Code Playgroud)

Loopy() 正在从代码中的其他地方调用.

c# forms timer

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

如何制作一个wpf倒数计时器?

我想创建wpf倒数计时器,将结果显示为hh:mm:ss到文本框中,我会感谢任何人的帮助.

c# wpf timer countdown

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

Qt5:如何在线程中等待信号?

可能标题问题不是很明确.我在Windows7上使用Qt5.

在一个线程(QThread)中,在"process()"函数/方法中,我必须等待"encrypted()"属于我在此线程中使用的QSslSocket 的SIGNAL.另外我想我应该使用QTimer并等待"timeout()"SIGNAL,以避免在无限循环中被阻塞......
我现在拥有的是:

// start processing data
void Worker::process()
{
    status = 0;
    connect(sslSocket, SIGNAL(encrypted()), this, SLOT(encryptionStarted()));
    QTimer timer;
    connect(&timer, SIGNAL(timeout()), this, SLOT(timerTimeout()));
    timer.start(10000);
    while(status == 0)
    {
        QThread::msleep(5);
    }

    qDebug("Ok, exited loop!");

    // other_things here
    // .................
    // end other_things

    emit finished();
}

// slot (for timer)
void Worker::timerTimeout()
{
    status = 1;
}

// slot (for SSL socket encryption ready)
void Worker::encryptionStarted()
{
    status = 2;
}
Run Code Online (Sandbox Code Playgroud)

好吧,显然它不起作用.它永远停留在那个循环中......
所以,问题是:有没有办法解决这个问题?我怎么能等待那个"encrypted()"SIGNAL但不要超过 …

c++ qt multithreading timer wait

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

UWP App中的计时器未链接到UI

我正在开发一个UWP MVVM项目,并希望在用户交互停止一段特定时间时实现自动注销系统.
到现在为止,我DispatcherTimer每秒使用a 从200倒数.

TimerLeave = 200;
var _dispatcherTimer = new DispatcherTimer();
_dispatcherTimer.Tick += dispatcherTimer_Tick;
_dispatcherTimer.Interval = new TimeSpan(0, 0, 1);

_dispatcherTimer.Start();
Run Code Online (Sandbox Code Playgroud)

但是因为DispatcherTimer与UI链接而我正在构建MVVM应用程序,所以我正在寻找替代方案.
我搜索了一下,发现在计时器上运行后台任务.问题是这个计时器只能设置为每15分钟运行一次,这在我的情况下自动注销用户有点太长了.我找不到减少15分钟的解决方法.
所以我的问题是,是否有可能在UWP项目中设置一个没有链接到UI并且可以设置变量的计时器?

c# timer uwp

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

等待线程资源消耗

我的问题:

JVM中的大量线程是否会消耗大量资源(内存,CPU),当线程处于TIMED_WAIT状态(未休眠)时> 99.9%的时间?当线程在等待时,如果需要任何线程,维护它们需要多少CPU开销?

答案是否也适用于非JVM相关环境(如Linux内核)?

语境:

我的程序收到大量空间消耗包.它在不同的包中存储类似属性的计数.在收到包裹后的一段时间(可能是几小时或几天)之后,该特定包裹到期并且包裹所贡献的任何计数应该减少.

目前,我通过将所有包存储在内存或磁盘中来实现这些功能.每隔5分钟,我从存储中删除过期的包,并扫描剩余的包以计算属性.这种方法耗费了大量内存,并且时间复杂度很低(O(n)对于时间和内存,其中n是未到期的包的数量).这使程序的可扩展性变得可怕.

解决此问题的另一种方法是每次打包时递增属性计数,并启动一个Timer()在程序包到期后递减属性计数的线程.这消除了存储所有庞大的包装并减少时间复杂性的需要O(1).但是,这会产生另一个问题,因为我的程序将开始拥有O(n)多个线程,这可能会降低性能.由于大多数线程将在其生命周期的绝大部分时间处于TIMED_WAIT状态(Java Timer()调用Object.wait(long)方法),它是否仍会以非常大的方式影响CPU?

java performance multithreading timer

15
推荐指数
1
解决办法
4212
查看次数