我正在尝试为我的休息时间安排创建一个提醒系统(由于某种原因,我工作的技术公司的计划系统/ facepalm中没有该公司)
如果我在文本框中输入的休息时间与系统时间匹配,则可以使它工作。我想做的是更改它,使其在与系统时间匹配时在5分钟之前弹出一次,然后再次弹出。到目前为止,这是我按时提醒的内容:
Sub Timer1Tick(sender As Object, e As EventArgs)
DaClock.Text = Format(Now, "h:mm")
为简单起见^
If Coffee.Text = "DaClock.Text" And reminder.Checked = True Then
Coffee.Text = (Coffee.Text + " Over")
Coffee.Enabled = False
MsgBox("Break Time", MsgBoxStyle.Information, "break")
Else If Coffee.Text = DaClock.Text Then
Coffee.Text = (Coffee.Text + " Over")
Coffee.Enabled = False
End If
End Sub
我发现我无法弄清楚如何在5分钟前弹出提醒。
edit 可能不相关,但DaClock是不可见的标签
更新 我能够设置一个secont标签和一个添加了5分钟的字符串,因此该事件将提前5分钟触发,但是现在我遇到了格式问题:
Dim MyTime As String
MyTime = TimeOfDay.AddMinutes(5)
D5Clock.Text = Format(MyTime, "h:mm")
但是在Label中显示的只是h:mm。如果我选择不格式化并正常显示(例如:6:30:54 PM),但是格式化对于确保触发中断条目很重要,因为我们仅在菜单中使用h:mm(例如6:30)领域。
答案 0 :(得分:0)
通过同时运行两个时钟并调用每个时钟来解决这个问题,这样会提前5分钟再按时再次发生。
D5Clock.Text = Format(TimeOfDay.AddMinutes(5), "h:mm")
DaClock.Text = Format(TimeOfDay, "h:mm")
哪里
答案 1 :(得分:0)
虽然我可以尊重您的工作,尤其是您进步了,并且克服了自己的挑战,但我还是想提出一个替代方案(解释如下):
Public NotInheritable Class Reminder
Private Shared _instance As Reminder
Private Sub New()
'hehehe Private
End Sub
Public Shared Function GetInstance() As Reminder
If _instance Is Nothing Then _instance = New Reminder
Return _instance
End Function
Private Async Sub RemindMe(ByVal time As DateTime)
Dim waiting As Boolean = True
While (waiting)
Await Task.Delay(60000) 'This means "Check once every minute"
If time > Now Then
MessageBox.Show("Wake up, it's " & Now.ToShortTimeString & " !!")
waiting = False
End If
End While
End Sub
Public Sub Dispose()
Me.Dispose()
End Sub
End Class
那么...这邪恶的东西到底是什么?这是Singleton。这是一个始终只有一个实例的类,这就是Sub New()
私有的原因:我不希望人们能够实例化该类!除了你通过使用公共功能GetInstance()
,您只能获得一个实例(只有一个实例)(如果您请求多个实例,您将始终获得第一个实例,因此请问问自己是否喜欢)。>
然后,您可以要求它唤醒时间,以提醒您做某事。它跟踪您在不同线程上的提醒,因此不必担心这些会占用您所有主线程的cpu。不过,这只是一个基本代码片段,我建议您使用自定义消息等来更改它。
如果您想保持记忆愉快,请不要忘记Dispose()
。无论如何,当您处置它的父对象时,它最终都会死掉,但这仍然是一个健康的习惯。
它可能会或可能不会对您有所帮助,并且如果您不是要处理的东西,也不要介意我,但是我觉得您可能会喜欢。玩得开心!