我需要在给定时间(30秒)内等待和事件,如果此时间过去则超时。我需要做什么?
我从dll向服务器发送命令,我需要等待响应才能发送另一个。我想实现一个超时功能,这就是为什么我需要使用一个计时器
我想使用计时器,但不知道如何在DLL中使用它。
答案 0 :(得分:5)
.NET中有四个计时器 - System.Windows.Forms.Timer
,System.Threading.Timer
和System.Timers.Timer
以及System.Windows.DispatcherTimer
。
您可以使用类库中的任何一个以及可执行文件中的任何一个,但您需要根据您的情况选择最合适的一个 - 这不是很清楚。
如果您希望在UI线程中运行,则应使用适当的基于UI的计时器;否则其中一个。您可以提供的信息越多,我们就越能提供帮助。
答案 1 :(得分:2)
这段代码说明了为什么使用计时器来表示时间间隔通常是一个坏主意
Dim WithEvents myTimer As New Windows.Forms.Timer 'a timer
Dim stpw As New Stopwatch
Dim count As Long
Const intervalValue As Integer = 1000 'some number of ms. s/b > 10
Private Sub myTimer_Tick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles myTimer.Tick
count += 1
Dim foo As Long = count * intervalValue 'the interval using tick firing every intervalValue ms.
Dim bar As Long = stpw.ElapsedMilliseconds 'the actual amount of time that has passed
Label1.Text = foo.ToString("n0")
Label2.Text = bar.ToString("n0")
Label3.Text = (bar - foo).ToString("n0") 'show error
End Sub
Private Sub Form1_Shown(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Shown
myTimer.Interval = intervalValue 'number of ms.
myTimer.Start()
stpw.Start()
End Sub
更好的方法是将计时器设置为较小的值,比如说例子为1秒,并查看经过的时间是否大于您要查找的值。