我正在使用Xamarin和MvvmCross构建跨平台应用程序。我需要每分钟调用服务器进行更新(稍后我将移动到推送通知)但我无法在我的核心项目中设置计时器。我看过MvvmCrossN+42,但我相信目标项目较旧,允许计时器。下面是我的目标框架。有没有更好的方法让我不断调用调用服务的方法?.NETFramework4.5及更高版本Windows应用商店应用(Windows8)及更高版本Windows手机8Xamarin.AndroidXamarin.iOS 最佳答案 @stevemorgan的回答非常有效。我基于该代码创建了一个Tim
我想知道System.Timers中Timer类的精度是多少,因为它是double(这似乎表明您可以有几分之一毫秒)。这是什么? 最佳答案 Windows桌面操作系统在40毫秒以下确实不准确。操作系统根本不是实时的,因此会出现明显的不确定性抖动。这意味着虽然它可能会报告精确到毫秒甚至更小的值,但您不能指望这些值真正有意义。因此,即使Timer间隔设置为某个亚毫秒值,您也不能依赖设置和触发之间的时间来实现您所说的实际时间。除此之外,您正在运行的整个框架是不确定的(GC可能会暂停您并在Timer应该触发的时间进行收集)并且您最终会面临大
timer.Interval=5000;timer.Tick+=newEventHandler(timer_Tick);timer.Start();“timer_Tick”方法是在新线程中启动还是仍在创建它的线程中? 最佳答案 不,计时器在创建它的线程中运行。我假设你在谈论System.Windows.Forms.Timer这是使用线程消息循环实现的。WinForms计时器的底层是Win32APISetTimer()它通过将WM_TIMER消息发送到SetTimer()线程的消息队列来操作。这样做的后果之一是,如果您的事件处理程序花
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。如何在C#中使用计时器在10秒后关闭(自动隐藏)WPF窗口?
我有一个奇怪的问题...在过去的几个小时里我一直在发疯......我在winform代码中(从工具栏)输入的计时器不会滴答...我的程序中有几种形式的计时器,它们都工作正常...我尝试做完全相同的事情,但它不会滴答作响...我选择它,将它拖到一个窗体上,启用它,设置间隔并处理滴答事件……但没有任何反应……我什至尝试在tick事件中放入像messagebox.show这样的随机代码,只是为了看看是否有任何事情发生,但什么也没有!!!正如我所说,我的程序中有几个计时器(在其他形式上,而不是在我试图放置这个计时器的形式中)并且它们都工作正常......有什么建议吗?提前致谢!
总结:在Windows服务和控制台应用程序中,我调用了一个包含计时器的公共(public)库,该计时器会定期触发大约需要30秒才能完成的操作。这工作正常,但是......当调用服务停止或应用程序退出并且计时器在ElapsedEventHandler中时,我需要服务停止/应用程序退出以等待事件处理程序完成。我通过在调用计时器停止方法时检查boolInEvent属性来实现此功能。虽然这很实用,但问题是:这是执行此操作的最佳方法吗?是否有替代方法可以更好地满足此目的?另一个问题是我需要避免服务停止请求因“服务无法响应停止请求”而失败这是我的实现publicsealedclassTimedPr
我正在尝试在我的Windows应用商店应用程序中设置计时器。publicvoidStart_timer(){Windows.UI.Xaml.DispatcherTimertimer=newDispatcherTimer();timer.Tick+=newWindows.UI.Xaml.EventHandler(timer_Tick);timer.Interval=newTimeSpan(00,1,1);boolenabled=timer.IsEnabled;//Enablethetimertimer.Start();//Startthetimer}点击按钮我调用上面的方法来设置这个定时
如果我调用Threading.Timer.Change()连续两次,下一次线程什么时候运行?例如:myTimer.Change(5000,Timeout.Infinite);//Only2secondspass.myTimer.Change(5000,Timeout.Infinite);在此之后,线程会在3秒或5秒后运行吗?我希望答案是后者,每次调用Change()都会重置计时器。如果没有,我将需要找到解决此问题的方法。 最佳答案 它将在5秒后运行。调用Change将重置初始计数。 关于
长话短说,我需要.Net中的精确计时器-以毫秒为单位的精度-意思是,如果我告诉它在10毫秒过去后触发事件,它必须这样做,+-1毫秒。内置的.NetTimer类的精度似乎为+-16ms,这对我的应用程序来说是NotAcceptable。我找到了这篇文章http://www.codeproject.com/Articles/98346/Microsecond-and-Millisecond-NET-Timer它为计时器提供了一个代码,这正是我所需要的(甚至更多-以微秒为单位)。但是,问题是,等效的OnTimer似乎是在另一个线程中执行的。所以,如果我添加一些代码,比如:label1.Tex
我需要编写一个接收事件的组件(该事件具有唯一ID)。每个事件都需要我发出请求。该事件指定了等待请求响应的超时时间。如果响应在计时器触发之前出现,很好,我取消计时器。如果计时器先触发,则请求超时,我想继续。这个超时时间是在事件中指定的,所以它不是常量。预期的超时时间在30秒到5分钟的范围内。我可以看到两种实现方式。为每个事件创建一个计时器,并将其放入将事件与计时器链接起来的字典中。创建一个包含超时DateTime的有序列表,以及一个新线程,每100毫秒循环一次以检查是否超时。选项1似乎是最简单的解决方案,但我担心创建这么多计时器可能不是一个好主意,因为计时器可能太昂贵了。创建大量定时器时