vb.netでスリープ中にバックグラウンドで.Gif画像を実行する方法

サニーサンディープ

私はvb.netウィンドウフォームアプリケーションに取り組んでいます。ここにいくつかの.gif画像があるメインウィンドウがあります。これらの画像は、データベースからの値に従ってアニメーション化されます。画像をクリックすると、ポップアップウィンドウが開きます。このポップアップウィンドウには、6つのボタンがあります。ボタンのいずれかをクリックすると、SQL Serverデータベーステーブルのそれぞれの値が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の更新は行われません。

非同期/待機

スレッドを使用するか、データベースを更新して遅延を適用するために非同期/待機に切り替えることをお勧めします。

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

VB6 IDE内でステップイン、オーバー、アウトをデバッグすると、クラスウィンドウが閉じます。

分類Dev

バックグラウンドコードの遅い行。バイパス/交換/スピードアップする方法。VB.NET

分類Dev

VB2013リストボックスで選択したアイテムをバックグラウンドワーカーに渡す

分類Dev

VB.net リボン プロジェクトで実行する getEnabled コールバック メソッドを取得する方法

分類Dev

バックグラウンドプロセスがアプリケーションvb.netをハングさせる

分類Dev

VB.NETでグローバルマウスイベント(移動、クリック)に登録するにはどうすればよいですか?

分類Dev

VB.netがバックグラウンドワーカーを停止

分類Dev

Linuxでバックグラウンドで無限にスクリプトを実行する方法は?

分類Dev

ボタンをクリックすると、VB.netでPythonスクリプトを実行します

分類Dev

mysqlリーダーを備えたvb.netバックグラウンドワーカーと複数のテキストボックス

分類Dev

パッケージ名で実行中のバックグラウンドアプリをフォアグラウンドに移動する方法

分類Dev

バックグラウンドスレッドvb.netからランタイムWebブラウザコントロールを操作する

分類Dev

osxでvb.netプログラムを実行する

分類Dev

C#の同じソリューションで別のプロジェクトバッドからvbスクリプトを実行する

分類Dev

バックグラウンドでbashスクリプトを自動的に実行する方法は?

分類Dev

android起動時にアプリケーションをバックグラウンドで実行する方法

分類Dev

VB.NETでPowershellスクリプトを実行中にエラーが発生しました

分類Dev

PHPスクリプトをバックグラウンドで実行する

分類Dev

Pythonスクリプトをバックグラウンドで実行する

分類Dev

PHP:バックグラウンドでバッチスクリプトを実行する方法[Windows]

分類Dev

npmスクリプトからバックグラウンドでhttpサーバーを実行する

分類Dev

常に実行されるバックグラウンドアプリに使用する.NETプロジェクト/サービスは何ですか?

分類Dev

VB.Net別のスレッドでタスクを実行する

分類Dev

フォアグラウンドプロセスの実行中にバックグラウンドで別のプロセスを生成する方法

分類Dev

iOSアプリケーションがフォアグラウンドにあるときにバックグラウンドで操作を実行する方法

分類Dev

symfonyでバックグラウンドプロセスを実行する方法

分類Dev

vb.netコードビハインドで作成されたドロップダウンリストにハイパーリンクを追加するにはどうすればよいですか?

分類Dev

vb net で新しいメール Outlook 画像にスクリーンショットを添付する

分類Dev

EntityFrameworkを使用してVB.netプロジェクトのコードを最初にリバースエンジニアリングする方法

Related 関連記事

  1. 1

    VB6 IDE内でステップイン、オーバー、アウトをデバッグすると、クラスウィンドウが閉じます。

  2. 2

    バックグラウンドコードの遅い行。バイパス/交換/スピードアップする方法。VB.NET

  3. 3

    VB2013リストボックスで選択したアイテムをバックグラウンドワーカーに渡す

  4. 4

    VB.net リボン プロジェクトで実行する getEnabled コールバック メソッドを取得する方法

  5. 5

    バックグラウンドプロセスがアプリケーションvb.netをハングさせる

  6. 6

    VB.NETでグローバルマウスイベント(移動、クリック)に登録するにはどうすればよいですか?

  7. 7

    VB.netがバックグラウンドワーカーを停止

  8. 8

    Linuxでバックグラウンドで無限にスクリプトを実行する方法は?

  9. 9

    ボタンをクリックすると、VB.netでPythonスクリプトを実行します

  10. 10

    mysqlリーダーを備えたvb.netバックグラウンドワーカーと複数のテキストボックス

  11. 11

    パッケージ名で実行中のバックグラウンドアプリをフォアグラウンドに移動する方法

  12. 12

    バックグラウンドスレッドvb.netからランタイムWebブラウザコントロールを操作する

  13. 13

    osxでvb.netプログラムを実行する

  14. 14

    C#の同じソリューションで別のプロジェクトバッドからvbスクリプトを実行する

  15. 15

    バックグラウンドでbashスクリプトを自動的に実行する方法は?

  16. 16

    android起動時にアプリケーションをバックグラウンドで実行する方法

  17. 17

    VB.NETでPowershellスクリプトを実行中にエラーが発生しました

  18. 18

    PHPスクリプトをバックグラウンドで実行する

  19. 19

    Pythonスクリプトをバックグラウンドで実行する

  20. 20

    PHP:バックグラウンドでバッチスクリプトを実行する方法[Windows]

  21. 21

    npmスクリプトからバックグラウンドでhttpサーバーを実行する

  22. 22

    常に実行されるバックグラウンドアプリに使用する.NETプロジェクト/サービスは何ですか?

  23. 23

    VB.Net別のスレッドでタスクを実行する

  24. 24

    フォアグラウンドプロセスの実行中にバックグラウンドで別のプロセスを生成する方法

  25. 25

    iOSアプリケーションがフォアグラウンドにあるときにバックグラウンドで操作を実行する方法

  26. 26

    symfonyでバックグラウンドプロセスを実行する方法

  27. 27

    vb.netコードビハインドで作成されたドロップダウンリストにハイパーリンクを追加するにはどうすればよいですか?

  28. 28

    vb net で新しいメール Outlook 画像にスクリーンショットを添付する

  29. 29

    EntityFrameworkを使用してVB.netプロジェクトのコードを最初にリバースエンジニアリングする方法

ホットタグ

アーカイブ