У меня есть метод, который принимает аргумент обратного вызова для асинхронного выполнения, но блок catch, похоже, не улавливает никаких исключений, созданных синхронным вызовом ( this.Submit
относится к синхронному методу).
public void Submit(FileInfo file, AnswerHandler callback)
{
SubmitFileDelegate submitDelegate = new SubmitFileDelegate(this.Submit);
submitDelegate.BeginInvoke(file, (IAsyncResult ar) =>
{
string result = submitDelegate.EndInvoke(ar);
callback(result);
}, null);
}
Есть ли способ перехватить исключение, созданное новым потоком, и отправить его в исходный поток? Кроме того, является ли это «правильным» способом обрабатывать асинхронные исключения? Я написал свой код таким образом, чтобы его можно было вызывать следующим образом (при условии, что проблема с исключением исправлена):
try
{
target.Submit(file, (response) =>
{
// do stuff
});
}
catch (Exception ex)
{
// catch stuff
}
но есть ли более правильный или элегантный способ сделать это?