C#中的时间或时间,以及另一个问题

时间:2010-12-27 15:33:54

标签: c#

问题是: 我怎么能在没有用户干预的情况下每两秒钟使一个标签闪烁。 比如每2秒label.text =“”。接下来的两秒我做了这个label1.text =“visible” 或改变其他属性,如颜色或任何东西。

我放弃了

你可以帮我一个基本的代码,谢谢。

4 个答案:

答案 0 :(得分:1)

您可以尝试使用timer,间隔为2秒。但请记住,无论何时使用UI之外的线程,您都需要查看delegatesBeginInvoke

要完成您所追求的目标,可以每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秒
  • DoAction
  • 睡2秒
  • DoAnotherAction

在一个循环中。

有2个帖子,我建议这样:C# Running timed job on StackOverflow

修改:使用QuartzNet (tutorial)

链接on StackOverFlow

答案 3 :(得分:0)

最简单的方法是使用System.Windows.Forms.Timer。您可以将其放在表单上并设置间隔,然后创建Tick事件处理程序。链接的文档有一个简单的示例,您可以轻松修改它以使用您的标签。

使用此计时器的好处在于它会自动与UI线程同步,因此您不必担心InvokeBeginInvoke等。