【发布时间】:2011-12-26 05:55:41
【问题描述】:
我有一个循环,在该循环中我正在运行一个调度程序计时器。这是我的代码:
Dim dt As New DispatcherTimer
dt.Interval = TimeSpan.FromSeconds(5)
AddHandler dt.Tick, AddressOf ChangeLabel
Dim items as new List(Of String) From {"Apple","Orange","Banana"}
For Each i In List
Me.Title = i
dt.StartTimer()
System.Threading.Thread.Sleep(5000)
Next
Private Sub ChangeLabel
'Show dt elapsed time in a label
End Sub
基本上我想要的是显示项目列表中的每个项目在每个项目后暂停 5 秒。我想在标签中显示经过的时间,在经过的时间达到 5 秒后显示下一个项目。使用 Thred.Sleep 方法这是不可能的,因为它只会冻结我的应用程序 5 秒,并显示下一个项目,而无需使用经过时间更新标签。
那么用什么来代替 Thread.Sleep 来不冻结应用程序并用经过的时间更新标签?
【问题讨论】:
-
否;您需要使用事件或线程。
-
根本问题是什么? (你最终想做什么?)
-
@jberger 我正在尝试遍历列表中的所有项目,在标签中一次显示一个。我想在每个项目后暂停 5 秒钟,然后显示下一个。
-
在更改当前显示的标签之间“暂停 5 秒”或“间隔 5 秒”?