我的应用程序使用Jabber-net进行消息传递(XMPPlibrary.)如果由于某种原因与服务器的连接终止,我想做的是每隔一分钟左右继续尝试连接。如果我启动一个计时器在下一次尝试之前等待一段时间,该计时器是否异步运行并将生成的Tick事件加入主线程,或者我是否需要启动我自己的线程并从内部启动计时器在那里? 最佳答案 你用的是什么定时器?System.Windows.Forms.Timer将在UI线程中执行System.Timers.Timer在线程池线程中执行,除非您指定SynchronizingObjectSystem.Thr
System.Timers.Timer和System.Threading.Timer的触发时间间隔与请求的时间间隔有很大不同。例如:newSystem.Timers.Timer(1000d/20);生成每秒触发16次而不是20次的计时器。为了确保太长的事件处理程序不会产生副作用,我编写了这个小测试程序:int[]frequencies={5,10,15,20,30,50,75,100,200,500};//TestSystem.Timers.Timerforeach(intfrequencyinfrequencies){intcount=0;//InitializetimerSyste
定时器的最大间隔为2,147,483,647。大约25天。但在我的要求中,我需要计时器等待30天。我该如何解决?请帮忙。 最佳答案 为此使用System.Threading.Timer。有些构造函数采用long、uint或TimeSpan而不是的int截止时间。任何这些都可以让您设置30天的期限。更新:这是最简单的方法:System.Threading.Timer_timer;publicvoidStart30DayTimer(){TimeSpanspan=newTimeSpan(30,0,0,0);TimeSpandisableP
考虑以下代码:classTestTimerGC:Form{publicTestTimerGC(){ButtonbtnGC=newButton();btnGC.Text="GC";btnGC.Click+=(sender,e)=>GC.Collect();this.Controls.Add(btnGC);System.Windows.Forms.Timertmr=newSystem.Windows.Forms.Timer();tmr.Interval=1000;tmr.Tick+=(sender,e)=>this.Text=DateTime.Now.ToString();tmr.Star
我正在开发一个UWPMVVM项目,并希望在用户交互停止特定时间后实现自动注销系统。到目前为止,我一直在使用DispatcherTimer每秒从200倒数。TimerLeave=200;var_dispatcherTimer=newDispatcherTimer();_dispatcherTimer.Tick+=dispatcherTimer_Tick;_dispatcherTimer.Interval=newTimeSpan(0,0,1);_dispatcherTimer.Start();但是因为链接了DispatcherTimer使用UI并且我正在构建一个MVVM应用程序,我正在寻找
我想通过C#使用最高分辨率的计时器。例如,我想每11个滴答声引发一个事件(我听说滴答声是pc中可能的最高计数器)。我尝试了计时器,发现最短耗时以毫秒为单位。我查看了秒表,但秒表没有引发事件。谢谢。 最佳答案 使用多媒体计时器应该可以为您提供每秒大约1000个事件。此代码应该对您有所帮助。publicdelegatevoidTimerEventHandler(UInt32id,UInt32msg,refUInt32userCtx,UInt32rsv1,UInt32rsv2);//////Amultimediatimerwithmill
这个问题在这里已经有了答案:HighresolutiontimerinC#(5个答案)关闭3年前。我想要一个分辨率约为5毫秒的计时器。但是.Net中的当前Timer的分辨率约为50ms。我找不到任何创建高分辨率计时器的有效解决方案,尽管有人声称您可以在C#中完成。
假设我有一个配置了10秒(10k毫秒)间隔的Windows窗体计时器:myTimer.Interval=10000;我想启动它并立即触发Tick事件:myTimer.Start();myTimer_Tick(null,null);最后一行有效,但是否有更好或更合适的方法? 最佳答案 我唯一不同的做法是将实际的Tick功能移动到一个单独的方法中,这样您就不必直接调用事件。myTimer.Start();ProcessTick();privatevoidMyTimer_Tick(...){ProcessTick();}privatevo
我正在使用system.Timers.Timer创建一个计时器。publicSystem.Timers.Timertimer=newSystem.Timers.Timer(200);privatevoidbtnAutoSend_Click(objectsender,EventArgse){timer.Enabled=true;timer.Elapsed+=newSystem.Timers.ElapsedEventHandler(send);timer.AutoReset=true;}publicvoidsend(objectsource,System.Timers.ElapsedEve
我有一个System.Threading.Timer,它每10毫秒调用一次相应的事件处理程序(回调)。该方法本身不可重入,有时可能会超过10毫秒。因此,我想在方法执行期间停止计时器。代码:privateTimer_creatorTimer;//BackgroundWorker'sworkprivatevoidCreatorWork(objectsender,DoWorkEventArgse){_creatorTimer=newTimer(CreatorLoop,null,0,10);//someothercodethatworkerisdoingwhilethetimerisactiv