私のメインフォームでは、送信ボタンをクリックすると、長時間実行されるプロセス (5 つのメソッド) が実行されます。その時、5枚のクロス画像で個々のフォームを見せたいだけです。メソッドが一つ一つ完成したら、クロス画像をティック画像に変更したいです。私は次のようにコードを試しました:
Private Sub btnRetrieve_Click(sender As System.Object, e As System.EventArgs) Handles btnRetrieve.Click
>
Try
If Not BackgroundWorker1.IsBusy Then
BackgroundWorker1.RunWorkerAsync()
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Try
Retrieve()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Public Sub Retrieve()
Try
RetrieveForm.Show()
Dim thrd1 As New Thread(New ThreadStart(AddressOf RetrieveClient))
Dim thrd2 As New Thread(New ThreadStart(AddressOf RetrieveProject))
Dim thrd3 As New Thread(New ThreadStart(AddressOf RetrieveModule))
Dim thrd4 As New Thread(New ThreadStart(AddressOf RetrievePerson))
Dim thrd5 As New Thread(New ThreadStart(AddressOf RetrieveStatus))
Dim thrd6 As New Thread(New ThreadStart(AddressOf RetrievePriority))
thrd1.Start()
tickimage(RetrieveForm.pbClient)
thrd2.Start()
tickimage(RetrieveForm.pbProject)
thrd3.Start()
tickimage(RetrieveForm.pbModule)
thrd4.Start()
tickimage(RetrieveForm.pbUsers)
thrd5.Start()
tickimage(RetrieveForm.pbStatus)
thrd6.Start()
tickimage(RetrieveForm.pbPriority)
Application.DoEvents()
MessageBox.Show("Retrieved")
RetrieveForm.Close()
InitialLoad()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Public Sub tickimage(ByVal pbId As PictureBox)
Try
pbId.InitialImage = Nothing
Dim img As Image = Resources.tick1
pbId.Image = img
pbId.SizeMode = PictureBoxSizeMode.StretchImage
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub`
このコードでは、ボタンをクリックすると、最初はすべての画像がチェックされます。各メソッドの最後で、イメージをクロスからティックに 1 つずつ変更したいと考えています。私のコードの何が問題なのかわかりません..誰かが間違いを見つけたら、私を修正してください.