我想知道是否有办法主持设置用户可以在同一个按钮上进行两次点击之间的定时延迟。
它是一个图像宿主应用程序,但是现在用户可以通过快速点击来充斥我的服务器。那么有没有办法在用户点击和再次点击之间设置10秒的时间延迟。如果他们确实试图点击那个时间它会有一个MsgBox警告他们,他们不能点击,直到时间到了?
请注意我不想使用线程,因为我不想挂起我的程序,原因很简单,因为它会在当时上传图像,并且用户希望在应用程序上执行其他操作正在上传。
谢谢!
答案 0 :(得分:2)
基于你提到MsgBox和Threading,我假设客户端是Windows应用程序。您可以禁用该按钮10秒钟。这是一些.NET 4.0代码:
Imports System.Threading
Public Class MainForm
Private Sub MyButton_Click() Handles MyButton.Click
Me.DisableButtonAsync(10)
Me.PerformWork()
End Sub
Private Sub PerformWork()
' Upload image or whatever.
End Sub
Private Sub DisableButtonAsync(ByVal seconds As Int32)
Me.MyButton.Enabled = False
Dim uiScheduler = TaskScheduler.FromCurrentSynchronizationContext()
Task.Factory _
.StartNew(Sub() Thread.Sleep(seconds * 1000)) _
.ContinueWith(Sub(t) Me.MyButton.Enabled = True, uiScheduler)
End Sub
End Class
...或者更漂亮的.NET 4.5等价物:
Imports System.Threading
Public Class MainForm
Private Sub MyButton_Click() Handles MyButton.Click
Me.DisableButtonAsync(10)
Me.PerformWork()
End Sub
Private Sub PerformWork()
' Upload image or whatever.
End Sub
Private Async Sub DisableButtonAsync(ByVal seconds As Int32)
Me.MyButton.Enabled = False
Await Task.Delay(seconds * 1000)
Me.MyButton.Enabled = True
End Sub
End Class