Παιδιά καλησπέρα , έχω φάει τα λυσακά μου με το Backgroundworker.
Το χρησιμοποιω κανονικα σε φορμες για να τρεξω χρονοβορες διαδικασιες και ολα καλα.
θέλω όμως να φτιαξω μια Loadingform. στις περιπτωσεις που ανοιγω αλλες φορμες και κανουν ώρα να φορτώσουν data
αντι λοιπον να βαλω σε καθε φορμα backgroundworker εφτιαξα μια frmwait και δεν βγαζω ακρη απο που και πως θα καλω το backgroundworker.
Προσπαθησα να φτιαξω μια κλαση που να περναω το ονομα της φορμας που θελαω να ανοιξω και εγραψα αυτο τον κωδικα αλλα δεν καταλαβαινω πλεον τιποτα (ειμαι σχετικα ερασιτεχνης στον προγραμματισμο)
Μπορειτε να βοηθησετε να το κατανοησω
Public Sub ShowWait(ByVal show As Boolean, ByVal frmtoOpen As Form)
Try
AddHandler bg.DoWork, AddressOf workerDowork
AddHandler bg.RunWorkerCompleted, AddressOf workerCompleted
Dim fw As New frmWait
If show Then
Application.DoEvents()
fw.StartPosition = FormStartPosition.Manual
Dim bnd As New System.Drawing.Rectangle
bnd =
My.Computer.Screen.Bounds
fw.Left = Math.Round(bnd.Width / 2) - Math.Round(fw.Width / 2)
fw.Top = Math.Round(bnd.Height / 2) + Math.Round(fw.Height / 2)
fw.TopMost =
True
fw.Show()
Else
For Each fw1 As Form In My.Application.OpenForms
If fw1.Name = "frmwait" Then
fw1.Close()
Exit For
End If
Next
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub workerDowork(ByVal sender As Object, ByVal e As doworkeventargs)
Dim fn As New Form
fn = e.Argument
fn.Show()
End Sub
Private Sub workerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs)
End Sub
Yannis