Судя по вашим комментариям, вы видите ошибку, потому что не все исключения имеют InnerException. Если InnerException равно NULL, вы увидите эту проблему.
Здесь есть несколько проблем. Во-первых, вот правильный метод try / catch:
try
{
// Code here
}
catch (Exception ex)
{
// Handle your exception
throw; // Rethrow the same exception, preserving the stack trace (optional)
}
Во-вторых, вы, вероятно, злоупотребляете целью ReportProgress. Вы должны попытаться выполнить всю свою логику в своем backgroundWorker_DoWork и отправить процент (от 0 до 100) в ReportProgress для обновления любых индикаторов выполнения.
Возможно, вы использовали ReportProgress так же, как и для устранения многопоточной проблемы. Чтобы добавить элементы в ListBox между потоками, оберните ваш код анонимным методом, используя функцию BeginInvoke
Пример:
// Note: I haven't error checked this, and this is only a rough idea of what
// you're trying to do. I'm not even sure of the overall goal here.
this.lstThumbnailView.Invoke((Action)delegate
{
ListViewItem lvwItem = new ListViewItem(name, img.ImageIndex);
ivwItem.Tag = files[img.ImageIndex];
lstThumbNailView.Items.Add(lvwItem);
});