Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 我需要在VB中显示标签之间添加延迟,但我似乎遇到了问题_Vb.net_Multithreading_Visual Studio 2010 - Fatal编程技术网

Vb.net 我需要在VB中显示标签之间添加延迟,但我似乎遇到了问题

Vb.net 我需要在VB中显示标签之间添加延迟,但我似乎遇到了问题,vb.net,multithreading,visual-studio-2010,Vb.net,Multithreading,Visual Studio 2010,我正在创建一个简单的“有趣”应用程序,当用户打开应用程序时,它会假装连接到设备并将其关闭。我希望它能像这样慢慢地显示标签 Connecting to device... (wait like 10 seconds) Exploiting registry... (wait like 10 seconds) 诸如此类,正如你从下面我使用的代码中所看到的那样,system.threading.thread.sleep(2000)它可以工作,但它会暂停整个代码,因为这个shutdown.vb是从一个

我正在创建一个简单的“有趣”应用程序,当用户打开应用程序时,它会假装连接到设备并将其关闭。我希望它能像这样慢慢地显示标签

Connecting to device...
(wait like 10 seconds)
Exploiting registry...
(wait like 10 seconds)
诸如此类,正如你从下面我使用的代码中所看到的那样,system.threading.thread.sleep(2000)它可以工作,但它会暂停整个代码,因为这个shutdown.vb是从一个单独的main.vb打开的,它只会干扰整个执行和完成的工作!除了线程睡眠,还有其他方法吗?我只需要在每行之间停顿一下,谢谢!代码如下

Public Class shutdown
    Private Sub shutdown_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Label2.Hide()
        Label3.Hide()
        Label4.Hide()
        shutdownConnect()
    End Sub
    Private Sub shutdownConnect()
        Label2.Show()
        System.Threading.Thread.Sleep(2000)
        Label3.Show()
        System.Threading.Thread.Sleep(2000)
        Label4.Show()
    End Sub
End Class

Load
事件处理程序中隐藏或显示任何内容都没有意义,因为表单在该点上甚至没有显示。使用
线程.睡眠
也是非常不合适的。休眠UI线程是一件几乎永远不应该做的事情


正确的方法是首先在设计器中将
Label3
Label4
Visible
属性设置为
False
。这样,简单地自然显示表单将显示
Label2
,而不会显示其他表单。您还可以使用间隔为2000的
计时器
,并在
勾选
事件处理程序中,
显示下一个
标签
。您可以将
标签
添加到队列或其他集合中,然后,当它们全部显示时,
停止
计时器
您可以使用
计时器
。在设计器中将标签的Visibility设置为False,然后使用计时器更改

Public Class shutdown
 Private counter As Integer
 Private Sub shutdown_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    timer1.Start()
 End Sub
 Private Sub timer1_Tick() Handles timer1.Tick
    counter += 1
    Select Case counter
      Case 1
       Label2.Visible = True
      Case 2
       Label3.Visible = True
      Case 3
       Label4.Visible = True
       timer1.Stop()
       counter = 0 'reset for next time
    End Select
 End Sub
End Class

用一个
计时器
来做这个。怎么样,@OneFineDay