VB6功能vb.net
我有在VB6的代码VB6功能vb.net
Private Sub pause(ByVal interval As Variant)
Dim Current As Variant
Current = Timer
Do While Timer - Current < Val(interval)
DoEvents
Loop
End Sub
如何转换在vb.net?我尝试过这种方式,但它不起作用。
错误在哪里?
Private Sub pause(ByVal interval As Single)
Dim newDate As Date
newDate = DateAndTime.Now.AddSeconds(interval)
While DateAndTime.Now.Second <> newDate.Second
Application.DoEvents()
End While
End Sub
感谢
我认为下面是原码(以andygrips答案略有不同)的最佳转换:但是
Private Sub Pause(ByVal seconds As Integer)
Dim current As Date
current = DateTime.Now
Do While (DateTime.Now - current).TotalSeconds < seconds
Application.DoEvents()
Loop
End Sub
注意,在.NET中使用的DoEvents的最好完全避免
它只会逃避While
如果Now
秒等于newDate
秒。试试这个:
Private Sub pause(ByVal interval As Single)
Dim waitUntil As Date = DateAndTime.Now.AddSeconds(interval)
While DateAndTime.Now < waitUntil
Application.DoEvents()
End While
End Sub
而且我可以建议你使用PascalCase(方法名的第一个字母是大写)命名方法。
根据微软标准的.NET命名约定,私有成员应该在camelCase中,公共成员应该在PascalCase中。 – 2012-07-12 11:57:43
我不相信微软真的说你应该为私人成员使用camelCase,只是你应该为公众成员使用PascalCase。 我对所有方法都使用PascalCase,因为我觉得它更具可读性。 – andygjp 2012-07-12 12:37:44
@andygjp - 所有命名约定都有优点和缺点,但最终阻力是徒劳的! – 2012-07-12 13:00:54
您是否有建议更换DoEvents?谢谢。 – yonghan79 2012-07-12 14:52:55
@ yonghan79你需要看看多线程 - 检查[BackGroundWorker类](http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx) – 2012-07-12 15:17:04
谢谢,我会试一试。顺便说一下,你介意看看我的代码,如果可以的话,我会发送代码。 :)我已经尝试过转换的子,它给了我一个错误,是否有可能是由Application.DoEvents引起的? – yonghan79 2012-07-12 15:54:19