草庐IT

c# - 如何使用定时器等待?

我试图通过使用计时器来延迟我的方法中的事件,但是我不一定了解如何使用计时器来等待。我将计时器设置为2秒,但是当我运行这段代码时,最后一次调用没有2秒延迟。Timertimer=newTimer();timer.Tick+=newEventHandler(timer_Tick);//Everytimetimerticks,timer_Tickwillbecalledtimer.Interval=(1000)*(2);//Timerwilltickevertsecondtimer.Enabled=true;//Enablethetimervoidtimer_Tick(objectsende

c# - 秒表与计时器 - 何时使用

请原谅我提出这个问题,但我似乎无法找到何时使用哪个的良好来源。如果您能用简单的术语解释它,将很高兴。此外,我面临着这样的困境:看,我正在编写一个简单的应用程序。我希望它显示耗时(hh:mm:ss格式或其他格式)。而且,能够“加快”或“减慢”其时间间隔(即加快速度,以便实时的一分钟等于应用程序中的一小时)。例如,在Youtube视频中(*不考虑我们可以跳转到视频的特定部分*),我们会在左下角看到观看该视频所花费的实际时间屏幕一角,但通过在选项菜单中导航,我们可以加快或降低视频速度。我们实际上可以看到时间以与速度因子一致的方式更新(比如,如果你选择两倍的速度,下面的计时器更新速度比正常快两

C# 如何暂停定时器?

我有一个C#程序,如果用户停止与程序交互,我需要在其中停止计时器。它需要做的是暂停,然后在用户再次激活时重新启动。我做了一些研究,发现有这样的命令:timer.Stop();和timer.Start();但我想知道是否有:timer.Pause();然后当用户再次激活时,它会从中断处继续,不会重新启动。如果有人可以提供帮助,将不胜感激!谢谢,弥迦 最佳答案 您可以通过使用.NET中的Stopwatch类来实现此目的。通过简单地停止和启动,您可以继续使用秒表实例。确保使用usingSystem.Diagnostics;vartimer

c# - 我可以将 Task.Delay 用作计时器吗?

我想每秒执行一些代码。我现在使用的代码是:Task.Run((Action)ExecuteSomething);ExecuteSomething()定义如下:privatevoidExecuteSomething(){Task.Delay(1000).ContinueWith(t=>{//Dosomething.ExecuteSomething();});}这个方法会阻塞线程吗?或者我应该在C#中使用Timer类吗?似乎Timeralsodedicatesaseparatethreadforexecution(?) 最佳答案 Tas

c# - 调用 timer.Stop() 后执行的 System.Timers.Timer Elapsed 事件

背景:我有一个计时器,我用它来跟踪自serialPortDataReceived事件被触发以来已经过了多长时间。我正在为此创建自己的解决方案而不是使用内置的超时事件,因为我正在获取连续的数据流,而不是发送查询并获得一个响应。问题:在DataReceived处理程序中,我有一个停止计时器的语句,这样它就不会过去。问题是很多时候它仍然执行Elapsed处理程序后记。我读到可以使用SynchronizingObject来解决这个问题,但我不确定如何实现。这是我的代码:我试图删除所有我认为不相关的内容。privateSystem.Timers.TimertimeOut;privateSyste

c# - 将锁与 Threading.Timer 一起使用

我有一个Windows服务应用程序,它使用Threading.Timer和TimerCallback在特定时间间隔进行一些处理。我需要一次将此处理代码锁定到1个线程。因此,例如,启动服务并触发第一个回调,然后启动一个线程并开始处理。只要处理在下一次回调之前完成,这就可以正常工作。例如,处理时间比平时稍长,并且在另一个线程正在处理时再次触发TimerCallback,我需要让该线程等待另一个线程完成。这是我的代码示例:staticTimertimer;staticobjectlocker=newobject();publicvoidStart(){varcallback=newTimer

c# - Xamarin.iOS 中的 NSTimer 与 Timer - 何时使用什么?

在使用原生NSTimer还是使用.NET替代品时是否有规则?System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.Timer 最佳答案 如果您的目标是可移植性,我会使用.NET计时器(见下文),除非您别无选择(例如方法的NSTimer参数)调用)。很遗憾,您的问题中没有列出我一直以来最喜欢的计时器,它是由Task类提供的:awaitTask.Delay(20);//dosomethingafterthedelay使用非常简单。因此,代替此Timer代码:voidf

c# - 我可以将匿名函数绑定(bind)到 Timer 的滴答事件吗?

如果Tick-handling函数只会在一个上下文中使用(即总是在同一个函数中与同一个Timer对象结合使用),为什么还要将它作为一个单独的函数呢?当我想到这个时,这就是我脑海中闪过的想法。是否可以将匿名函数与Timer的滴答事件关联起来?这就是我想要做的。TimermyTimer=newTimer();myTimer.Tick+=newEventHandler(function(objectsender,EventArgse){MessageBox.Show("Helloworld!");}); 最佳答案 您正在寻找Anonymo

c# - c#中For循环的时间延迟

我如何在一定的旋转后在循环中使用时间延迟?假设:for(inti=0;i我希望每8次旋转后延迟1秒。 最佳答案 有很多方法可以做到这一点:方法一:极其糟糕:忙等待:DateTimetimeToStartUpAgain=whatever;while(DateTime.Now这是一件可怕的事情;操作系统会假设你正在做有用的工作,并会分配一个CPU来做除了旋转之外的任何事情。永远不要这样做,除非您知道自旋只会持续几微秒。基本上,当您这样做时,您已经雇用了某人为您看表;那不经济。方法二:非常糟糕:休眠线程。让线程休眠也是一件可怕的事情,但没

c# - Console.ReadKey 与带有计时器的 Console.ReadLine

以下代码是一个众所周知的示例,用于显示调试版本和发布版本之间的区别:usingSystem;usingSystem.Threading;publicstaticclassProgram{publicstaticvoidMain(){Timert=newTimer(TimerCallback,null,0,2000);Console.ReadLine();}privatestaticvoidTimerCallback(Objecto){Console.WriteLine("InTimerCallback:"+DateTime.Now);GC.Collect();}}如果您使用调试配置运行