Premetto che non uso spesso il BackgroundWorked, ma sto provando, per un'altro mio programma, ad aggiornare, ogni secondo, la proprietà Text del form, con la data corrente, oltre a questo ho inserito alla chiusura del programma che: viene interrotto il lavoro in background e che lo stesso programma non viene chiuso ( solamente per ora ), il codice è questo:
Ora questo codice, mi deve visualizzare, nel titolo del form, l'ora in tempo reale, e fino qui tutto ok, ma, quando chiudo il form, il lavoro in background mi continua ( mi mostra sempre l'orario corrente, senza fermarsi ), sbaglio qualcosa io?
Codice:
Private Sub mainForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
BackgroundWorker1.CancelAsync()
e.Cancel = True
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
BackgroundWorker1.WorkerReportsProgress = True
BackgroundWorker1.WorkerSupportsCancellation = True
Dim i As Integer = 0
While True
System.Threading.Thread.Sleep(1)
BackgroundWorker1.ReportProgress(i)
If BackgroundWorker1.CancellationPending = True Then
e.Cancel = True
Else
i += 1
End If
End While
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Me.Text = Now
End Sub
Ora questo codice, mi deve visualizzare, nel titolo del form, l'ora in tempo reale, e fino qui tutto ok, ma, quando chiudo il form, il lavoro in background mi continua ( mi mostra sempre l'orario corrente, senza fermarsi ), sbaglio qualcosa io?