This works just fine and as expected:
Imports System.Threading
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
bw1.RunWorkerAsync()
End Sub
Private Sub bw1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bw1.RunWorkerCompleted
Debug.WriteLine("RunWorkerCompleted")
If e.Error IsNot Nothing Then
Debug.WriteLine("An error was thrown...")
Debug.WriteLine(e.Error.ToString)
Else
Debug.WriteLine("No error was detected.")
End If
End Sub
Private Sub bw1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles bw1.DoWork
Debug.WriteLine("Sleeping for 3 seconds...")
Thread.Sleep(3000)
Debug.WriteLine("Throwing...")
Throw New ArgumentNullException("someDummyVariable")
End Sub
End Class
The result:
Sleeping for 3 seconds...
Throwing...
A first chance exception of type 'System.ArgumentNullException' occurred in BackgroundWorker Sandbox.exe
RunWorkerCompleted
An error was thrown...
System.ArgumentNullException: Value cannot be null.
Parameter name: someDummyVariable
at BackgroundWorker_Sandbox.Form1.bw1_DoWork(Object sender, DoWorkEventArgs e) in C:\Users\Dave\Documents\Visual Studio 2012\Projects\BackgroundWorker Sandbox\BackgroundWorker Sandbox\Form1.vb:line 25
at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)