如何在 vb.net 睡眠期间在后台运行 .Gif 图像

阳光桑迪普

我正在开发 vb.net 窗口窗体应用程序。在这里,我有一个主窗口,其中有几个 .gif 图像。这些图像将根据来自数据库的值进行动画处理。单击任何图像时,将打开一个弹出窗口。在这个弹出窗口上有六个按钮。单击任何按钮时,Sql 服务器数据库表中的相应值将更新为 1,1 秒后相同的值将更新为 0。为此,我使用了以下代码

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
    Try
        If (Label1.Text.Contains("Drag")) Then
            tag2 = "D" + Label1.Text.Substring((Len(Label1.Text.ToString()) - 1), 1)
        Else
            tag2 = Label1.Text.Trim().ToString()
        End If
        ObjTags.Name = tag2 + ".Start"

        btnStart.Enabled = False

        ObjTags.DigitalValue = 1
        i = ObjTags.UpdateConValue(6)
        Application.DoEvents()
        Thread.Sleep(1000)


        ObjTags.DigitalValue = 0
        i = ObjTags.UpdateConValue(6)

        btnStart.Enabled = True

    Catch ex As Exception

    End Try
End Sub

这很好用。单击按钮时,数据库中的相应值将更新为 1,1 秒后将更新为 0。但在此操作期间,主页中的 .gif 图像停止动画。如何解决这个问题?

自习

当您调用Thread.Sleep(1000)UI 线程时,您是在命令 UI 线程休眠,因此在此期间 UI 不会更新。同样,当尝试在 UI 线程中更新数据库时,UI 线程将很忙,并且在此期间不会在 UI 中进行更新。

异步/等待

您可能希望使用线程或切换到 async/await 来更新数据库并应用延迟:

Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Await UpdateDatabase()
    Await Task.Delay(1000)
    UpdateUI()
End Sub

Private Async Function UpdateDatabase() as Task
    'Do time-consuming task here
End Function

Private sub UpdateUI()
    'Update UI here
End sub

线

在您的情况下,由于您使用的是 .NET 4.0,您需要使用如下线程:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim ts = New Threading.ThreadStart(Sub()
                UpdateDatabase()
                Threading.Thread.Sleep(1000)
                Me.Invoke(Sub()
                              UpdateUI()
                          End Sub)
             End Sub)
    Dim t = New Threading.Thread(ts)
    t.Start()
End Sub
Private Sub UpdateDatabase()
    'Do time-consuming task here
End Sub
Private sub UpdateUI()
    'Update UI here
End sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在VB.Net中重新调整图像大小

来自分类Dev

如何在 vb.net 中保存对原始图像的更改?

来自分类常见问题

如何在Swift中加载GIF图像?

来自分类Dev

如何在图像视图Android中显示.Gif图像

来自分类Dev

如何在图像上绘制矩形并将其保存在VB.Net中

来自分类Dev

我们如何在 VB.net 的图片框中显示之前的图像?

来自分类Dev

如何在asp.net vb中通过图像填充Rad组合

来自分类Dev

如何使用vb.net替换html文件的图像源

来自分类Dev

vb.net图像处理

来自分类Dev

图像数组VB.NET

来自分类Dev

如何在android中从URL播放动画GIF图像?

来自分类Dev

如何在html5 canvas中使用gif图像?

来自分类Dev

如何在C#中显示GIF图像的特定帧?

来自分类Dev

如何在API 28之前使用AnimatedImageDrawable(GIF图像)?

来自分类Dev

从uri加载图像时如何在本机中放置gif

来自分类Dev

如何在android中从URL播放动画GIF图像?

来自分类Dev

如何在C#中显示GIF图像的特定帧?

来自分类Dev

如何在页面加载时显示加载的gif图像

来自分类Dev

如何在 Python Pillow 中合并图像和 Gif

来自分类Dev

如果给定的.gif图像不是动画gif,如何将.gif图像转换为.jpeg?

来自分类Dev

如何使X在DataGridImageColumn上的图像成为空白图像?-VB.Net

来自分类Dev

如何使gif图像适合Android上的WebView

来自分类Dev

如何使wininet仅下载gif图像

来自分类Dev

如何使gif图像显示为初始屏幕

来自分类Dev

如何检测图像(GIF)是动画还是静止

来自分类Dev

如何在php / mysql中显示数据库中的图像。如果使用C#/ Vb.net将图像插入db

来自分类Dev

如何在vb.net中分割?

来自分类Dev

如何在vb.net中连接_

来自分类Dev

VB.NET透明图像边框

Related 相关文章

热门标签

归档