inkedgfx
Well-known member
I added a backgroundworker to my lottery number generator program..everything is working fine but the backgroundworker keeps working even if all the games are picked....
for example:
the user has the option to choose from 1 to 6 games to generate...each game generates 6 unique numbers...once the worker picks the numbers the labels display the numbers for each game...this works fine , once all the labels are filled with the numbers the worker continues to pick numbers and changes the labels with different numbers.....below is the code I have for the worker.....
what I want the worker to do is stop when all the games are picked.the last bit of the backgroundworker_dowork I added a for loop to calculate the progress..which doesnt work either.
any help would be appreciated
Thank You
InkedGFX
for example:
the user has the option to choose from 1 to 6 games to generate...each game generates 6 unique numbers...once the worker picks the numbers the labels display the numbers for each game...this works fine , once all the labels are filled with the numbers the worker continues to pick numbers and changes the labels with different numbers.....below is the code I have for the worker.....
Private Sub BackgroundWorker1_DoWork(sender As Object, e As ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork Dim HowMany As Integer frmNumbers.Show() HowMany = Me.NumericUpDown1.Value frmNumbers.Label1.Visible = False frmNumbers.Label2.Visible = False frmNumbers.Label3.Visible = False frmNumbers.Label4.Visible = False frmNumbers.Label5.Visible = False frmNumbers.Label6.Visible = False If HowMany = "1" Then frmNumbers.Label1.Visible = True frmNumbers.Label11.Text = HowMany & " Game Generated!" frmNumbers.Text = HowMany & " Game Generated!" RandomUnique(frmNumbers.Label1) frmNumbers.Label1.Text = frmNumbers.Label1.Text.Substring(0, frmNumbers.Label1.Text.Length - 2) End If If HowMany = "2" Then frmNumbers.Label1.Visible = True frmNumbers.Label2.Visible = True frmNumbers.Label11.Text = HowMany & " Games Generated!" frmNumbers.Text = HowMany & " Games Generated!" RandomUnique(frmNumbers.Label1) frmNumbers.Label1.Text = frmNumbers.Label1.Text.Substring(0, frmNumbers.Label1.Text.Length - 2) ' RandomUniqueTwo(Label2) ' Label2.Text = Label2.Text.Substring(0, Label2.Text.Length - 2) Do Until frmNumbers.Label2.Text < frmNumbers.Label1.Text RandomUniqueTwo(frmNumbers.Label2) frmNumbers.Label2.Text = frmNumbers.Label2.Text.Substring(0, frmNumbers.Label2.Text.Length - 2) Loop End If If HowMany = "3" Then frmNumbers.Label1.Visible = True frmNumbers.Label2.Visible = True frmNumbers.Label3.Visible = True frmNumbers.Label11.Text = HowMany & " Games Generated" frmNumbers.Text = HowMany & " Games Generated!" RandomUnique(frmNumbers.Label1) frmNumbers.Label1.Text = frmNumbers.Label1.Text.Substring(0, frmNumbers.Label1.Text.Length - 2) Do Until frmNumbers.Label2.Text < frmNumbers.Label1.Text RandomUniqueTwo(frmNumbers.Label2) frmNumbers.Label2.Text = frmNumbers.Label2.Text.Substring(0, frmNumbers.Label2.Text.Length - 2) Loop Do Until frmNumbers.Label3.Text < frmNumbers.Label2.Text RandomUnique(frmNumbers.Label3) frmNumbers.Label3.Text = frmNumbers.Label3.Text.Substring(0, frmNumbers.Label3.Text.Length - 2) Loop Application.DoEvents() End If If HowMany = "4" Then frmNumbers.Label1.Visible = True frmNumbers.Label2.Visible = True frmNumbers.Label3.Visible = True frmNumbers.Label4.Visible = True frmNumbers.Label11.Text = HowMany & " Games Generated" frmNumbers.Text = HowMany & " Games Generated!" RandomUnique(frmNumbers.Label1) frmNumbers.Label1.Text = frmNumbers.Label1.Text.Substring(0, frmNumbers.Label1.Text.Length - 2) Do Until frmNumbers.Label2.Text < frmNumbers.Label1.Text RandomUniqueTwo(frmNumbers.Label2) frmNumbers.Label2.Text = frmNumbers.Label2.Text.Substring(0, frmNumbers.Label2.Text.Length - 2) Loop Do Until frmNumbers.Label3.Text < frmNumbers.Label2.Text RandomUnique(frmNumbers.Label3) frmNumbers.Label3.Text = frmNumbers.Label3.Text.Substring(0, frmNumbers.Label3.Text.Length - 2) Loop Do Until frmNumbers.Label4.Text < frmNumbers.Label3.Text RandomUnique(frmNumbers.Label4) frmNumbers.Label4.Text = frmNumbers.Label4.Text.Substring(0, frmNumbers.Label4.Text.Length - 2) Loop Application.DoEvents() End If If HowMany = "5" Then frmNumbers.Label1.Visible = True frmNumbers.Label2.Visible = True frmNumbers.Label3.Visible = True frmNumbers.Label4.Visible = True frmNumbers.Label5.Visible = True frmNumbers.Label11.Text = HowMany & " Games Generated" frmNumbers.Text = HowMany & " Games Generated!" RandomUnique(frmNumbers.Label1) frmNumbers.Label1.Text = frmNumbers.Label1.Text.Substring(0, frmNumbers.Label1.Text.Length - 2) Do Until frmNumbers.Label2.Text < frmNumbers.Label1.Text RandomUniqueTwo(frmNumbers.Label2) frmNumbers.Label2.Text = frmNumbers.Label2.Text.Substring(0, frmNumbers.Label2.Text.Length - 2) Loop Do Until frmNumbers.Label3.Text < frmNumbers.Label2.Text RandomUnique(frmNumbers.Label3) frmNumbers.Label3.Text = frmNumbers.Label3.Text.Substring(0, frmNumbers.Label3.Text.Length - 2) Loop Do Until frmNumbers.Label4.Text < frmNumbers.Label3.Text RandomUnique(frmNumbers.Label4) frmNumbers.Label4.Text = frmNumbers.Label4.Text.Substring(0, frmNumbers.Label4.Text.Length - 2) Loop Do Until frmNumbers.Label5.Text < frmNumbers.Label4.Text RandomUnique(frmNumbers.Label5) frmNumbers.Label5.Text = frmNumbers.Label5.Text.Substring(0, frmNumbers.Label5.Text.Length - 2) Loop Application.DoEvents() End If For i As Integer = 1 To HowMany - 1 If HowMany = "6" Then frmNumbers.Label1.Visible = True frmNumbers.Label2.Visible = True frmNumbers.Label3.Visible = True frmNumbers.Label4.Visible = True frmNumbers.Label5.Visible = True frmNumbers.Label6.Visible = True frmNumbers.Label11.Text = HowMany & " Games Generated" frmNumbers.Text = HowMany & " Games Generated!" RandomUnique(frmNumbers.Label1) frmNumbers.Label1.Text = frmNumbers.Label1.Text.Substring(0, frmNumbers.Label1.Text.Length - 2) Do Until frmNumbers.Label2.Text < frmNumbers.Label1.Text RandomUniqueTwo(frmNumbers.Label2) frmNumbers.Label2.Text = frmNumbers.Label2.Text.Substring(0, frmNumbers.Label2.Text.Length - 2) Loop Application.DoEvents() Do Until frmNumbers.Label3.Text < frmNumbers.Label2.Text RandomUnique(frmNumbers.Label3) frmNumbers.Label3.Text = frmNumbers.Label3.Text.Substring(0, frmNumbers.Label3.Text.Length - 2) Loop Application.DoEvents() Do Until frmNumbers.Label4.Text < frmNumbers.Label3.Text RandomUnique(frmNumbers.Label4) frmNumbers.Label4.Text = frmNumbers.Label4.Text.Substring(0, frmNumbers.Label4.Text.Length - 2) Loop Application.DoEvents() Do Until frmNumbers.Label5.Text < frmNumbers.Label4.Text RandomUnique(frmNumbers.Label5) frmNumbers.Label5.Text = frmNumbers.Label5.Text.Substring(0, frmNumbers.Label5.Text.Length - 2) Loop Application.DoEvents() Do Until frmNumbers.Label6.Text < frmNumbers.Label5.Text RandomUnique(frmNumbers.Label6) frmNumbers.Label6.Text = frmNumbers.Label6.Text.Substring(0, frmNumbers.Label6.Text.Length - 2) Loop Application.DoEvents() BackgroundWorker1.ReportProgress(i) End If Next End Sub Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged frmNumbers.ProgressBar1.Value = e.ProgressPercentage frmNumbers.lblPercentDone.Text = frmNumbers.lblPercentDone.Text & " %" End Sub Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted Dim HowMany As Integer HowMany = Me.NumericUpDown1.Value frmNumbers.ProgressBar1.Value = 0 frmNumbers.lblgenerating.Text = HowMany & " Games Generated" End Sub
what I want the worker to do is stop when all the games are picked.the last bit of the backgroundworker_dowork I added a for loop to calculate the progress..which doesnt work either.
any help would be appreciated
Thank You
InkedGFX