我正在尝试创建一个vb.net程序,在用户选择的特定时间,代码将会执行。要做到这一点,我需要检查每分钟检查用户输入的小时和分钟是否与当前时间匹配(除非有更好的方法)。我试着用
Dim CurrentHour As Integer = Hour(Now())
但该程序给我一条错误信息,
表达式不是数组或方法,也不能有参数列表
我将使用Do循环来检查,但当然要看两者是否匹配,我需要当前的小时和分钟
答案 0 :(得分:2)
您的代码是正确的。您需要注意的是这样的事情:
Dim Now As Date
Dim CurrentHour = Hour(Now())
产生错误BC30471:表达式不是数组或方法,也不能有参数列表。
您现在可能看到问题,Now变量隐藏 Now函数。编译器现在被混淆,它不理解为什么括号存在。并且正确地抱怨Now不是数组而不是方法。它不是,现在不是。
除了重命名变量之外,您还可以通过提供更完整的名称来解决它:
Dim CurrentHour = Hour(DateAndTime.Now())
虽然这看起来相当模糊,但使用DateTime.Now
代替.NET方式而不是Basic方式。
答案 1 :(得分:1)
您应该使用native DateTime属性:
Dim CurrentHour As Integer = Now().Hour
如果您想使用Hour方法,您可能需要完全符合以下条件:
Microsoft.VisualBasic.Hour(Now())
因为小时很可能是应用程序中其他地方的属性或方法。
答案 2 :(得分:1)
Dim Inputtime As DateTime
if Inputtime = Date.Now.Hour Then
MsgBox("Success!")
End If
我不会使用do循环,因为它会占用程序的所有内存。我会选择一个计时器,每嘀咕一次。让它解雇这个子程序。
答案 3 :(得分:0)
Task Scheduler是一个选项。我宁愿使用Marshal.FinalReleaseComObject
然后使用代码底部的循环,GC.Collect
之后需要再次调用GC.WaitForPendingFinalizers()