间隔时间VB.Net中的随机数



我想知道你是否可以创建一个时间间隔,比如1秒来显示随机数。可以这样做吗?我应该如何进行?

Dim Rnd As New Random() 'No seed!
Dim lst As New List(Of Integer)
For i = 0 To 4
lst.Add(Rnd.Next(0, 81))
Next
For Each i In lst
TextBox1.Text &= i.ToString & vbCrLf
Next

我建议您使用Microsoft的Reactive Framework(又名Rx(-NuGetSystem.Reactive.Windows.Forms并添加using System.Reactive.Linq;,然后您可以这样做:

Observable.
Interval(TimeSpan.FromSeconds(1.0)).
Take(5).
Select(Function (x) Rnd.Next(0, 81).ToString()).
ObserveOn(TextBox1).
Subscribe(Sub (x) TextBox1.Text &= x & Microsoft.VisualBasic.vbCrLf)

Subscribe方法返回一个IDisposable,所以如果您想在if自然结束之前停止可观察,那么只需调用.Dispose()

在设计视图中将计时器添加到窗体中。将"间隔"属性设置为1000。

lst声明移动到Form级别,并添加Form级别的index变量。然后,该列表可以由多个事件过程查看,并且索引将在对Tick事件的调用之间保留其值。

填写完列表后,启动计时器。在Tick事件(每1000毫秒自动发生一次(中,一次填写一个数字。然后增加索引,以便下次Timer勾选时,下一个数字将出现在文本框中。当我们到达最后一个索引时,停止Timer

Private lst As New List(Of Integer)
Private index As Integer
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Rnd As New Random() 'No seed!
For i = 0 To 4
lst.Add(Rnd.Next(0, 81))
Next
Timer1.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
TextBox1.Text &= lst(index).ToString & vbCrLf
If index < lst.Count - 1 Then
index += 1
Else
Timer1.Stop()
End If
End Sub

最新更新