No exception is thrown, function just halts at this statement:
int productQuantity = Convert.ToInt32(\"1.00\");
and returns.
What
An exception is thrown, it's just that to see it you have to inspect the RunWorkerCompletedEventArgs.Error property in the event handler for BackgroundWorker.RunWorkerCompleted.
Any exception that is thrown from the background worker's thread when the background work is being done is assigned to that property.