С Delegate.BeginInvoke исключение будет получено путем вызова .EndInvoke - что вы должны сделать в любом случае, чтобы предотвратить утечку.
В BackgroundWorker оно появится в событии завершения
На ванили Thread
необработанное исключение прервет процесс.
Однако самый простой подход: не позволяйте ему бросить ...
public bool CheckForUpdates(Uri ftp) {
try {
Thread.Sleep(1000);
throw new Exception("bla");
return true;
} catch (Exception ex) {
// raise an event, call a method/callback, do something
}
}
Если вы в настоящее время не используете EndInvoke
, возможно, переключитесь на приведенный выше шаблон и просто используйте ThreadPool
напрямую (вместо Delegate.BeginInvoke
).