如何在C# XNA中创建一个定时器/计数器
我是C#编程的新手,这是我第一次在XNA中使用它.我正在尝试与朋友一起创建游戏,但我们正在努力制作基本的计数器/时钟.我们需要的是一个计时器,该计时器从1开始,每2秒+1,最大容量为50.编码的任何帮助都很好!谢谢. 解决方案 要在XNA中创建一个计时器,您可以使用类似的内容: int counter = 1; int limit = 50; float countDuration = 2f; //every 2s. float currentTime = 0f; currentTime += (float)gameTime.ElapsedGameTime.TotalSeconds; //Time passed since last Update() if (currentTime >= countDuration) { counter++; currentTime -= countDuration; // "use up" the time
16 2024-04-24
编程技术问答社区
时钟 "是否测量 "睡眠",即暂停的线程?
我试图更好地理解clock_t clock(void);功能,并有以下问题: 我是否正确理解clock clock衡量一个过程的刻度数量,因为它是主动运行 and sleep暂停调用线程 - 在这种情况下,只有一个线程,即主线程 - 因此暂停了整个过程.这意味着clock不能测量该过程的CPU时间(tick),因为它没有主动运行? 如果是这样,建议测量实际所需时间的推荐方法是什么? " clock()函数返回程序使用的处理器时间的近似值." source " CPU时间(过程时间)以时钟刻度或秒为单位进行测量." source "可以使用:sysconf(_SC_CLK_TCK);" #include // printf #include // clock #include // sleep int main() { printf("ticks per second: %zu\n", sysconf(_SC_C
22 2024-04-22
编程技术问答社区
什么是使我的应用程序的时间与外部服务器的时间同步的最佳方法?
我正在考虑将系统的本地时间更改为服务器的时间,然后使用它,但是我敢打赌,还有其他方法可以做到这一点.我一直在尝试在C#中找到类似时钟的东西,但找不到任何东西.我正在以日期时间格式接收服务器的时间. 编辑: 我需要在同一时间服务器工作时使用我的应用程序.我只想将服务器的时间一次和之后,请使用我从服务器获得的时间在一段时间内工作.我的系统时间和服务器的时间(甚至5秒)之间可能会有区别,这就是为什么我要这样做. 解决方案 答案 @jonskeet提供了同步时代看起来不错的东西,我只是想指出一些事情. 正如@Alexei已经说过的那样,用户需要管理特权才能更改其本地时间(至少在Windows中),但是也可能有其他问题会导致时间不同步(不良的Internet连接,黑客等).这意味着不能保证客户端时间确实与服务器时间相同,因此您至少需要检查请求的时间.另外,这里还可能存在一个可用性问题,我是否希望一个应用程序能够更改自己本地机器的时间?地狱号 总结一下: 检查请求服务
10 2024-04-22
编程技术问答社区
Windows 7左键点击时钟弹出
当左单击" Windows 7"(也许也是Vista)上的任务栏中的单击时钟时,弹出窗口将打开显示光泽和时钟(因此不是日期和时间调整窗口).我如何自己打开此窗口(在C#中首选)? 我希望timedate.cpl会打电话给这个,但这打开了日期和时间调整窗口. 解决方案 要显示时钟,您需要将适当的窗口消息发送到托盘窗口.可以使用Windows API函数SendMessage: 完成此操作. using System; using System.ComponentModel; using System.Runtime.InteropServices; using System.Text; class ShowCalendar { private delegate bool EnumChildCallback(IntPtr hwnd, ref IntPtr lParam); [DllImport("User32.dll")]
16 2024-04-21
编程技术问答社区
在C#中获得一个系统时钟变化指示器
是在C#中执行A delegate或event的一种方法,当秒,几分钟,小时,...更改系统锁定,而无需使用计时器,该计时器是否每次检查属性是否已更改并以最大为毫秒的延迟执行事件. 我想避免 polling 并在特定时间开火. 解决方案 如果您的问题是:"我该如何执行每一个/分钟/小时的每一个?" 间隔一分钟和小时,您可以做类似我回答中的事情,因此问题: 如何如何在C#? 中以特定时钟的特定时间生成事件 这应该是相当准确的,但对毫秒不准确. 在第二个间隔中,我会选择一个简单的1秒间隔的计时器.从用户的角度来看,我认为如果操作在xx:xx:xx.000或xx:xx:xx.350. 其他解决方案 您可以订阅其他解决方案 我通过将间隔设置为(1000 -DateTime.Now.millisecond) 通过将其设置为forms应用程序 _timer1 = new System.Windows.Forms.Timer();
16 2024-04-19
编程技术问答社区
如何在C#中生成一个特定时间的警报?
如何在特定时间生成事件?例如,说我想在上午8:00发出警报,以告知我它的8:00 AM(或一个事件告诉我任何给定时间的当前时间). 解决方案 使用 system.threading.计时器类: var dt = ... // next 8:00 AM from now var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24)); callback委托将在下次上午8:00和此后每24小时被称为 请参阅这个问题如何计算下一个下一个8:00 AM出现. 其他解决方案 详细说明DTB的答案这是我实施的方式. private void Form1_Load(object sender, EventArgs e) { System.Threading.TimerCallback callback = new TimerCallback
16 2024-04-12
编程技术问答社区
如何在C语言程序中使用秒(时间)作为计数器?
我正在尝试获得一个C程序,以使用Clock_t作为循环计数器的"秒".这怎么可能?以下是我的编码,不起作用, #include #include int main() { clock_t begin, end; double time_spent; begin = clock(); time_spent = (double)begin / CLOCKS_PER_SEC; for(time_spent=0.0; time_spent
4 2024-04-09
编程技术问答社区
time.h clock()在OS X上坏了?
我要生气吗?我在x86_64上运行此操作. #include #include #include int main(int argc, char *argv[]) { printf("Clock: %f\n", clock() / (double)CLOCKS_PER_SEC); sleep(1); printf("Clock: %f\n", clock() / (double)CLOCKS_PER_SEC); sleep(1); printf("Clock: %f\n", clock() / (double)CLOCKS_PER_SEC); return 0; } 此打印 时钟:0.002880 时钟:0.002968 时钟:0.003019 它显然在sleep(1)线上等待一秒钟,但输出显然是错误的. 如果那不起作用,是否有便携式C替代方案?
12 2024-04-09
编程技术问答社区
如何在Linux中使C语言的定时器在特定的系统时间内过期
我试图创建一个取决于系统时钟的计时器.这意味着当系统时间变化时,它也应影响该计时器的到期.所以我想,创建一个基于 clock_realtime "> clock_realtime 应该做技巧, .但是,当该计时器武装在60秒后到期,而当我将系统时钟提高32秒(使用日期命令)时,计时器在60秒后正好到期.它没有早于32秒. 因此,我计算了2个计时器到期之间的时钟时间和时钟时钟的时间.它显示了Clock_Realtime的92秒,clock_monotonic显示了60秒,这让我感到惊讶的是,基于clock_realtime的计时器没有寻找系统时钟更改.谁能解释这种行为? #include #include #include #include #include timer_t timerID; struct timespec rt1, rt2, mt1, mt2; vo
20 2024-04-09
编程技术问答社区
C的时钟 时间亮起
在学校,我必须做一个任务,我现在忙于三个星期,但仍然没有走得更远.我们需要制作一个必须圆形的时钟,几秒钟和几个小时的颜色需要点亮.因此,如果是4:25 AM,这些数字需要点亮. 这就是我现在所拥有的: #include #include #include #include #include #include int csecs (int cseconds ); void main (int sec, int min){ printf("Hallo! Veel plezier met het bekijken van de tijd!"); getch(); while (sec) { time_t cseconds;
18 2024-04-08
编程技术问答社区
安卓和JNI实时时钟
我遇到了迷你Android应用程序以及在 c(jni)函数中使用实时时钟信号的问题. 似乎Android UI不喜欢C函数中Insters的实时信号. 在以下PoC中,一个计时器触发信号每秒5次,如果在UI更新时触发了信号,则应用程序崩溃. 如果我不启动计时器=>否崩溃 如果我不放在UI =>没有崩溃 我写了这个小POC来证明行为. Java部分只需调用JNI函数,然后在屏幕上放一个按钮. public class MainActivity extends AppCompatActivity { Button bt; static { System.loadLibrary("testtimer-jni"); } /* JNI ingresso */ public native void jniStartTimer(); @Override protected void onCr
20 2024-04-08
编程技术问答社区
sysconf(_SC_CLK_TCK) vs. CLOCKS_PER_SEC
我想知道上述常数的返回值有什么区别. sysconf(_SC_CLK_TCK)返回100 CLOCKS_PER_SEC返回1,000,000 所以,假设我有这个: ... start = clock(); // Process starts here /* does something */ // Process ends here end = clock(); double time = ((double) end-start)/CLOCK_PER_SEC; // this would return in seconds ... 如何计算该过程使用的刻度量,而不是时间?我是否使用用于sysconf(_SC_CLK_TCK)或CLOCK_PER_SEC的时间? 我试图理解这些用法. 解决方案 根据文档,clock() CLOCKS_PER_SEC的分辨率返回时间. . 其他时间函数在 ticks中的分辨率中返回值. sysconf(_SC_CL
22 2024-04-08
编程技术问答社区
时钟滴答和时钟周期的概念
我编写了一个很小的代码来测量我的乘法算法所花费的时间: clock_t begin, end; float time_spent; begin = clock(); a = b*c; end = clock(); time_spent = (float)(end - begin)/CLOCKS_PER_SEC; 我正在Windows下的Mingw工作. 我猜想end = clock()在那个特定时刻会给我时钟的滴答.从begin中减去它会给我通过乘法消耗的时钟滴答.当我与CLOCKS_PER_SEC分开时,我将获得总时间. 我的第一个问题是:时钟刻度和时钟周期之间是否存在差异? 我的算法在这里很小,以至于差异end-begin是0.这是否意味着我的代码执行时间小于1 tick,这就是为什么我要零? 解决方案 从系统角度回答时钟刻度和时钟周期之间的差异 每个处理器都配有物理时钟(通常是石英晶体时钟),该时钟以一定频率(振动/秒)振荡.处理
18 2024-04-08
编程技术问答社区
clock()--c函数的执行时间
我正在尝试测量C中代码块的执行时间.我的代码中有类似的内容: clock_t begin, end; double time_spent; begin = clock(); ATL_dsymv(122,n,alfa,A,n,X,1,beta,Y,1); end = clock(); time_spent = (double)(end - begin) / CLOCKS_PER_SEC; printf ("(%f seconds)",time_spent); 但总是返回:( 0.000000秒).我在较简单的代码块上尝试了同样的事情,但是结果相同.我究竟做错了什么?非常感谢. 解决方案 clock通常在10毫秒的订单上具有非常差的分辨率.这很可能是您的问题.如果您在POSIX系统上,请使用clock_gettime与CLOCK_PROCESS_CPUTIME_ID时钟使用高分辨率结果.其他类型的系统可能具有特定于系统的方法来实现相同的方法.
18 2024-04-07
编程技术问答社区
使用clock_gettime获取负值
在以下程序中,我试图测量作业的执行时间(用于循环).但是,大多数时候它可以正常工作,但是有时,它返回负值!!我的第一个猜测是,该变量可能会溢出.谁能让我让我不对?我该如何解决问题? 谢谢 int main(int argc, char **argv) { long int ST; long int ET; struct timespec gettime_now; clock_gettime(CLOCK_REALTIME, &gettime_now); ST= gettime_now.tv_nsec; for (i=0; i
28 2024-04-07
编程技术问答社区
clock()和MPI_Wtime()的区别
快速问题.对于MPI实施我的代码,我在两者中都有很大的不同.我知道MPI_WTIME是每个处理器所经历的实时时间,而Clock()对预期时间进行了粗略的了解.有人想添加一些断言吗? 解决方案 clock函数完全没有用.它测量了CPU的时间,而不是实时/隔离时间,此外还有以下严重问题: 在大多数实现中,该分辨率非常糟糕,例如1/100秒. CLOCKS_PER_SECOND不是分辨率,而只是比例. 具有CLOCKS_PER_SECOND典型值(例如,UNIX标准要求为100万),clock将在32位系统的几分钟内溢出.溢出后,它返回-1. 大多数历史实现实际上并没有在溢出上返回-1,而是C标准所需的,而是包裹.由于clock_t通常是签名类型,因此试图用包装值执行算术会产生毫无意义的结果或不确定的行为. 在Windows上它做了完全错误的事情并测量实时的,而不是CPU时间. 其他解决方案 clock的官方定义是它为您提供CPU时间.在Windows中
14 2024-04-06
编程技术问答社区
C语言中CPU实际频率和clock_t之间的关系是什么?
真正的CPU频率与cpl_t(单位为 clock tick )之间的关系是什么关系. 假设我有以下C代码的一部分,该代码衡量了CPU在运行A for循环的时间. 但是,由于clocks_per_sec是C标准库中的恒定值(基本上是1000,000个),所以我想知道clock函数是如何在程序上运行在具有不同CPU频率的不同计算机上运行的程序消耗的真实CPU周期(对于我的笔记本电脑,是2.6GHz). 如果它们不相关,则CPU计时器在上述方案中如何工作? #include #include int main(void) { clock_t start_time = clock(); for(int i = 0; i
14 2024-04-06
编程技术问答社区
time.h中的clock()精度
我正在尝试计算函数用于运行和使用clock()函数这样做的刻度数量: unsigned long time = clock(); myfunction(); unsigned long time2 = clock() - time; printf("time elapsed : %lu",time2); ,但问题是它返回的值是10000的倍数,我认为这是CLOCK_PER_SECOND.是否有更精确的方法或等效函数值? 我正在使用Ubuntu 64位,但是如果解决方案可以在Windows&Mac OS等其他系统上使用. . 解决方案 POSIX中有许多更准确的计时器. gettimeofday() gettimeofday() ;微秒分辨率. 但不一定是如此广泛的可用;在旧版本的solaris上,需要-lposix4链接),并使用纳秒分辨率. 还有其他或多或少的古代,可移植性和分辨率的下秒计时器,包括: .请注意,这可以衡量父母和子过程的CPU时
12 2024-04-06
编程技术问答社区
你如何在Linux上以编程方式设置硬件时钟?
Linux提供了静止(2)调用来设置系统时间.但是,尽管这将更新系统的时间,但它没有设置BIOS硬件时钟以匹配新系统时间. Linux系统通常会在关闭时和周期性间隔将硬件时钟与系统时间同步.但是,如果机器在这些自动同步之一之前获得电源循环,则当机器重新启动时,时间将是不正确的. 设置系统时间时如何确保硬件时钟会更新? 解决方案 查看RTC MAN-PAGE以获取详细信息,但是如果您登录为根,则类似的内容: #include #include struct rtc_time { int tm_sec; int tm_min; int tm_hour; int tm_mday; int
16 2024-04-06
编程技术问答社区