我希望睡眠以获取VB中网络应用程序的 packetSize / Bandwidth 持续时间。
此值从“10 ^ -3 - 10 ^ -6”秒变化。
当我使用Sleep()函数时,如果它小于1(<1秒~~ 0秒??),我认为它不会在持续时间内休眠。
编辑:
如何实现这一目标?
答案 0 :(得分:1)
睡眠的分辨率为毫秒 - 即10 ^ -3。 (参见http://msdn.microsoft.com/en-us/library/d00bd51t.aspx和http://msdn.microsoft.com/en-us/library/274eh01d.aspx)。一秒钟是1000毫秒;那是睡眠(1000)。
您不能将Sleep()用于小于10 ^ -3秒的值。我已成功使用Sleep(),其值为62,125和250毫秒。
您可以尝试使用System.Diagnostics.Stopwatch;也许可以建立一个等待或暂停功能。 (见http://msdn.microsoft.com/en-us/library/ebf7z0sw.aspx)
答案 1 :(得分:0)
没有任何系统等待功能以微秒分辨率超时。您需要一个繁忙的循环和一个高分辨率计时器。当然,系统可能会抢占您的主题,因此您可以忘记Windows上的实时保证。
答案 2 :(得分:0)
我怀疑你是在思考这个问题。网络通信具有缓冲区,因为它们无法实际期望应用程序准备就绪并等待传输的每个位。我建议尽可能多地阅读数据,短暂睡眠并重复。
Do Until all data is read
While buffer contains data
read data
Wend
' Let other threads have a go, but come back as soon as possible.
Thread.Sleep(0)
Loop
这是否适合您的目的?
答案 3 :(得分:0)
我正在研究VB中的StopWatch概念......下面的代码块会起作用吗?
Private Sub MyWaiter(ByVal delay As Double)
Dim sw As Stopwatch = New Stopwatch()
sw.Start()
Do While sw.ElapsedTicks < delay * TimeSpan.TicksPerSecond
' Allows UI to remain responsive
Application.DoEvents()
Loop
sw.Stop()
End Sub