VB.NET - 按下按钮时,执行操作,等待几秒钟,然后执行其他操作

问题描述 投票:1回答:1

我想这样做,当我按下按钮时,它执行一个动作,等待一点,然后做另一个动作。但是,当我这样做时,它不会在睡眠完成之前执行第一个操作。我也试过制作一个后台线程,但它无法访问ListBox。有人可以解释一下我是如何做到的,以及为什么我现在的这个不起作用?谢谢。

Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
    ListBox1.Items.Add("Thing1")
    Threading.Thread.Sleep(500)
    ListBox1.Items.Add("Thing2")


End Sub
vb.net
1个回答
3
投票

在睡眠结束之前,它不会执行第一个操作

不完全是。操作确实发生,但UI不会反映更改,直到UI线程可用于重新绘制UI。但是,因为您将UI线程置于休眠状态,所以不会发生这种情况。

使用Task.Delay而不是睡觉,Private Async Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click ListBox1.Items.Add("Thing1") Await Task.Delay(500) ListBox1.Items.Add("Thing2") End Sub 与睡眠类似,但UI线程可以自由执行其他工作,包括刷新UI:

Async

请注意,为此,您需要将Await添加到方法签名中,并将Task.Delay()添加到Asynchronous Programming with Async and Await (Visual Basic)中。

要了解上述代码的工作原理,您可能需要阅读qazxswpoi。

© www.soinside.com 2019 - 2024. All rights reserved.