Вы не обрабатываете никаких исключений.
Изменить эту строку:
InsertMainLinks.Wait();
TO:
try {
InsertMainLinks.Wait();
}
catch (AggregateException ae) {
/* Do what you will */
}
В общем случае: чтобы запретить финализатору перебрасывать любые необработанные исключения, возникающие в вашем рабочем потоке, вы можете:
Подождите в потоке и перехватите System.AggregateException или просто прочитайте свойство исключения.
EG:
Task.Factory.StartNew((s) => {
throw new Exception("ooga booga");
}, TaskCreationOptions.None).ContinueWith((Task previous) => {
var e=previous.Exception;
// Do what you will with non-null exception
});
OR
Task.Factory.StartNew((s) => {
throw new Exception("ooga booga");
}, TaskCreationOptions.None).ContinueWith((Task previous) => {
try {
previous.Wait();
}
catch (System.AggregateException ae) {
// Do what you will
}
});