Я работаю над проектом WinForms, и в какой-то момент мне нужно загрузить XmlDocument в фоновом режиме. У меня есть BackgroundWorker, чтобы сделать это, но когда XmlDocument не может быть найден, BackgroundWorker генерирует исключение System.IO.FileNotFoundException в DoWork вместо передачи его в RunWorkerCompleted.
private void LoadBgWorker_DoWork(object sender, DoWorkEventArgs e)
{
//---download manifest---
SetStatusText("Downloading manifest...");
Manifest = new System.Xml.XmlDocument();
Manifest.Load(Properties.Resources.ManifestUrl); // <-- this is where the code gets stuck, it alerts me that the exception is unhandled
}
private void LoadBgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
Success = false;
Error = e.Error;
this.Close();
}
else
{
//---loading complete, close form---
Success = true;
this.Close();
}
}
Я что-то здесь упустил? Не должно ли исключение автоматически вызывать RunWorkerCompleted, чтобы его можно было обработать там?