我想知道如何创建一个sum + 1每 5 秒添加一次的标签?我尝试过使用 if 循环,但不幸的是它在一秒钟后重置。
using System.Diagnostics;
// using system.diagnotics voor stopwatch
namespace WindowsFormsApplication7
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Stopwatch sw = new Stopwatch();
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
sw.Start();
if (timer1.Enabled == true) { button1.Text = "stop"; }
else { button1.Text = "false"; sw.Stop(); }
}
private void timer1_Tick(object sender, EventArgs e)
{
int hours = sw.Elapsed.Hours;
int minutes = sw.Elapsed.Minutes; …Run Code Online (Sandbox Code Playgroud) 我正在开发一个严重依赖计时器的项目。我见过 1-2 个场景,其中计时器速度减慢,并且没有按应有的那样每秒滴答一次,但 1 秒/滴答需要 2-3 秒。通常这是由于整个计算机速度变慢并且变得非常滞后。我无法复制它,但一些用户报告了类似的发现,一旦他们重置计算机,一切都会正常。
我的问题是,超时/间隔如何工作?如果浏览器陷入困境,它会减慢计时器的速度,还是基于 CPU/系统时间?另外,是否还有其他人发生过类似的情况,如果是这样,我可以采取哪些措施来纠正这种情况(即使系统很慢,也让 15 秒计时器在 15 秒后实际触发一个事件)?
我想在我的常规课程中使用 QTimer(没有 QT 应用程序,而是从 QTimer 派生)。但是当我尝试这个时:
标题:
#include <qtimer.h>
QTimer* m_timer;
public slots:
void UpdateClock();
Run Code Online (Sandbox Code Playgroud)
来源:
m_timer = new QTimer(this);
QObject::connect(m_timer, SIGNAL(timeout()), this, SLOT(UpdateClock()));
m_timer->start(1000);
void MyClass::UpdateClock()
{
int i = 0;
}
Run Code Online (Sandbox Code Playgroud)
计时器永远不会跳转到 UpdateClock 方法!你知道为什么以及我如何解决这个问题吗?
谢谢!
我的表单包含两个控件:button1和timer1
timer1.Interval=1000; timer1.Enable=true;
Run Code Online (Sandbox Code Playgroud)
当点击按钮1时,Windows上的应用程序将启动。例如:记事本将显示。
但是当记事本显示时,timer1 没有运行。
怎么让timer1这么运行呢??
我的代码:
private void button1_Click(object sender, EventArgs e)
{
Process pro = new Process();
pro.StartInfo.FileName = "notepad";
pro.StartInfo.Arguments = "";
pro.Start();
pro.WaitForExit();
}
private void timer1_Tick(object sender, EventArgs e)
{
DateTime dtime = DateTime.Now;
string date_time = dtime.ToString("dd/MM/yyyy HH:mm:ss");
textBox2.Text = date_time;
}
Run Code Online (Sandbox Code Playgroud) 我用 Java 为桌面小部件制作了一个小时钟(该小部件还包括许多其他功能)。我在任务管理器中检查了应用程序 RAM 使用情况,发现时钟使用了 700+ MB 的 RAM。我禁用了时钟,RAM 使用量下降到大约 60 MB。这是时钟代码:
final int timeRun = 0;
new Thread()
{
public void run()
{
while(timeRun == 0)
{
Calendar cal = new GregorianCalendar();
int hour = cal.get(Calendar.HOUR);
int min = cal.get(Calendar.MINUTE);
int sec = cal.get(Calendar.SECOND);
int AM_PM = cal.get(Calendar.AM_PM);
String day_night = "";
if (AM_PM == 1){
day_night = "PM";
}else{
day_night = "AM";
}
String time = hour + ":" + min + ":" + sec + " " …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个单独的单元供我的主窗体调用,除了使用TTimer.
基本上,该函数应该做的就是主窗体uDataReceived调用BlinkRect(Gateway)以rRectControl单元形式处理,并且相应的矩形将在主窗体中闪烁。
以下是代码:
unit uRectControl;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants, System.IOUtils, FMX.Graphics, FMX.Types, FMX.Objects;
var
Blinks: array [0 .. 2] of record Rectangle: TRectangle;
Timer: TTimer;
end;
type
TMyClass = Class(TObject)
private
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
public
procedure BlinkRect(Gateway: integer);
end;
procedure AssignRectangles;
implementation
uses uDataReceived;
// Error shows "Cannot resolve unit name 'uDataReceived'
{ TMyClass }
procedure AssignRectangles;
var
i: integer;
begin
Blinks[0].Rectangle := TC_Theft_Detection.rect1;
// Error shows …Run Code Online (Sandbox Code Playgroud) 我打算使用 epoll 来检查 timefd 并触发一些操作。代码如下:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/timerfd.h>
#include <stdint.h>
#include <unistd.h>
#include <sys/epoll.h>
int main(int argc, char const *argv[])
{
struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
int timerfd;
timerfd = timerfd_create(CLOCK_MONOTONIC, 0);
struct itimerspec new_value;
new_value.it_value.tv_sec = 1;
new_value.it_interval.tv_sec = 1;
timerfd_settime(timerfd, 0, &new_value, NULL);
// uint64_t buff;
// while(true) {
// read(timerfd, &buff, sizeof(uint64_t));
// printf("%s\n", "ding");
// }
// code above works fine.
struct epoll_event ev, events[10];
int epollfd;
epollfd = epoll_create1(0);
if …Run Code Online (Sandbox Code Playgroud) 我的 ViewController 的星级评级如下所示(除了有 10 颗星)
当用户打开 ViewController 来查看某些没有评级的对象时,我想用非常简单的方法将用户的注意力吸引到这些星星上:动画星星突出显示(当每个字母相继突出显示时,您可以在现实世界中的某些广告上看到这种行为)。
这就是我的做法
func delayWithSeconds(_ seconds: Double, completion: @escaping () -> ()) {
DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
completion()
}
}
func ratingStarsAnimation() {
for i in 1...11 {
var timer : Double = 0.6 + Double(i)*0.12
delayWithSeconds(timer) {
ratingStars.rating = (i < 10) ? Double(i) : 0
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?我有一个名为delayWithSeconds 的函数来延迟操作,我使用这个函数来延迟每个星星的突出显示。0.6 是动画开始前的初始延迟。突出显示所有星星后 - 最后一步是关闭所有星星的突出显示。这段代码可以工作,但我不能说它很顺利。
我的问题是:
我有2个碎片。在他们之间的交易中我正在替换他们。在第二个片段上,我有一个计时器女巫更新 TextView。这是我需要的流程。
我的问题是,当我回到第二个片段并且计时器正在运行时,TextView 不再更新。
这是我的代码:
主要活动:
public class MainActivity extends AppCompatActivity{
private FragmentManager fragmentManager;
private FragmentTransaction fragmentTransaction;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setFragmentTransaction(null);
}
/**
* A fragment transaction Method
*
* @param fragment the fragment we want to display
*/
public void setFragmentTransaction(Fragment fragment) {
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
//replacing fragments new Fragments
if (fragment != null ) {
fragmentTransaction.replace(R.id.container, fragment);
} else if(fragment == null && (fragmentManager.getBackStackEntryCount() …Run Code Online (Sandbox Code Playgroud) 我想使用异步函数调用。我选择了boost::deadline_timer。
对我来说,硬件计时器是一种特定的硬件(令人惊讶),它独立于 CPU 工作,仅用于监视时间。同时,如果我理解正确,它也可以用于设置超时并在达到超时时产生中断。(计时器)
其主要优点是异步执行。设置定时器的线程可以继续工作,回调函数将在设置定时器的同一线程中触发。
让我描述一下我在行动中看到的情况。
应用程序包含一个或多个工作线程。例如,他们处理输入项目并过滤它们。让我们考虑应用程序有 5 个线程,每个线程设置一个计时器(5 秒)。
应用程序正在运行。例如当前线程是thread-3.
计时器 ( thread-0) 已到期并生成(可能是错误的术语)中断。
线程上下文切换 ( thread-3-> thread-0);
回调函数执行;
计时器 ( thread-1) 已到期并产生中断。
...
等等
PS0。我知道这不仅仅是多线程应用程序的一种可能情况。
问题:
我是否正确描述了工作过程?
难道我理解正确的话,即使当前线程是thread-0它也导致上下文切换,因为线程必须停止执行当前的代码,并切换到执行从回调机能的研究码?
如果每个线程设置 100k 或 500k 计时器,它将如何影响性能?
硬件是否有计时器计数的限制?
更新计时器的超时时间有多昂贵?