问题是: 我怎么能在没有用户干预的情况下每两秒钟使一个标签闪烁。 比如每2秒label.text =“”。接下来的两秒我做了这个label1.text =“visible” 或改变其他属性,如颜色或任何东西。
答案 0 :(得分:1)
您可以尝试使用timer,间隔为2秒。但请记住,无论何时使用UI之外的线程,您都需要查看delegates和BeginInvoke
要完成您所追求的目标,可以每1秒运行一次,然后检查DateTime.Now以查看时钟是否符合您的条件。
答案 1 :(得分:1)
你的问题有点难以理解,但我会尽我所能。
据我所知,您希望代码每两秒钟执行一次操作。最简单的方法是使用计时器。 System.Timers.Timer
类对此有用,以及System.Threading.Timer
。您使用的是由您决定的,但是Threading命名空间中的那个更加原始。
定时器在ThreadPool上运行,因此如果您要操作Windows窗体,请确保在GUI线程上执行的操作是使用Control.Invoke
用于Windows窗体,还是Dispatcher.Invoke
用于WPF。定时器也有点棘手,因为他们的线程公寓通常是MTA,所以如果你试图访问剪贴板或类似的东西,你可能会遇到错误。
如果你想确保你的计时器在某个时间而不是以特定的时间间隔完全,你可以制作一个计时器,其周期可以启动另一个计时器,或自行调整。我认为如果你每隔2或5秒做一些事情,你真的需要它在非常特定的时间发生吗?定时器和Windows时间通常不够具体,并且具有很小的不准确性 - 它会随时间漂移几毫秒。
答案 2 :(得分:0)
你可以用一个线程做什么:
在一个循环中。
有2个帖子,我建议这样:C# Running timed job on StackOverflow
修改:使用QuartzNet (tutorial)。
答案 3 :(得分:0)
最简单的方法是使用System.Windows.Forms.Timer。您可以将其放在表单上并设置间隔,然后创建Tick
事件处理程序。链接的文档有一个简单的示例,您可以轻松修改它以使用您的标签。
使用此计时器的好处在于它会自动与UI线程同步,因此您不必担心Invoke
,BeginInvoke
等。