Dobrý den, mám následující problém s výjimkou uvnitř BackgroundWorkeru. Normálně se na pozadí spusí vlákno BackgroundWorkeru (RunWorkerAsync) s tímhle kódem:
Private Function CopyingFiles( _
ByVal bw As BackgroundWorker, _
ByVal files As List(Of FileToCopy)) As Boolean
Throw New Exception("Chybka !")
Return False
End Function
Chci nějak docílit toho, aby se chyba dostala až do zpracování ukončení vlákna, kde je její obsluha:
Private Sub backgroundWorker1_RunWorkerCompleted( _
ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) _
Handles BackgroundWorker1.RunWorkerCompleted
If e.Cancelled Then
MessageBox.Show("Operation was canceled")
ElseIf (e.Error IsNot Nothing) Then
Dim msg As String = String.Format("An error occurred: {0}", e.Error.Message)
MessageBox.Show(msg)
Else
lblCopyOk.Visible = True
End If
End Sub
Chyba ale vyskočí už ve funkci CopyingFiles (aplikace se zastaví a vyskočí klasické chybové hlášení VisualStudia). Pokud program bez jakýchkoli oprav pustím dál, tak chyba se dostane správně až do backgroundWorker1_RunWorkerCompleted a tam se správně zpracuje. Jak se dá zařídit, aby ta chyba nevyskočila hned a jen se přenesla do obsluhy konce vlákna? (Přitom s kódem vycházím z příkladu v lokální nápovědě VS: "Walkthrough: Running an Operation in the Background" ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_mclictl/html/1b9a4e0a-f134-48ff-a1be-c461446a31ba.htm ) Předem díky moc za pomoc :-) Lukáš
|