これに関する他の投稿を読みましたが、まだ正しく機能していないようです。
BackgroundWorker が動作を開始するたびに、関数API.CheckForUpdateが原因で GUI がハングします。何もクリックできません。フリーズするのは 0.5 秒だけですが、気付くには十分です。
どうすればこれを修正できますか? API.CheckForUpdateを深く掘り下げて、特定のステートメントで個々のスレッドを実行する必要がありますか?それとも、これを処理する包括的なスレッドを作成することはできますか? API.CheckForUpdate は Form1 で何も参照しません。
また、Form1_Load は RunWorkerAsync 呼び出しを配置するのに最適な場所ではないと思います。より良い場所はどこですか?
'Declarations
Dim ApplicationUpdate As BackgroundWorker = New BackgroundWorker
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ApplicationUpdate.WorkerSupportsCancellation = True
ApplicationUpdate.WorkerReportsProgress = True
AddHandler ApplicationUpdate.DoWork, AddressOf ApplicationUpdate_DoWork
AddHandler ApplicationUpdate.ProgressChanged, AddressOf ApplicationUpdate_ProgressChanged
AddHandler ApplicationUpdate.RunWorkerCompleted, AddressOf ApplicationUpdate_RunWorkerCompleted
ApplicationUpdate.RunWorkerAsync()
End Sub
Private Sub ApplicationUpdate_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs)
'Check for an update (get the latest version)
Dim LatestVersion = API.CheckForUpdate
End Sub
Private Sub ApplicationUpdate_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs)
'Nothing here
End Sub
Private Sub ApplicationUpdate_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
'Work completed
MsgBox("Done")
End Sub