При использовании асинхронного кода для чтения из потоков и т. Д. С использованием шаблона BeginXXX / EndXXX, я считаю, что любые исключения, возникающие в ходе процесса, будут выброшены при выполнении вызова EndXXX.
Означает ли это, чтопервоначальный вызов BeginXXX никогда не вызовет исключение, он всегда будет вызываться EndXXX?
Или, если выразиться иначе, если я также включу BeginRead с try {} catch {}?
public StartReading()
{
// Should this be enclosed with try{}catch{} ?
stream.BeginRead(buffer, 0, buffer.Length, new AsyncCallback(readCallback), stream);
}
private void readCallback(IAsyncResult result)
{
Stream stream = (Stream)result.AsyncState;
try
{
int len = stream.EndRead(result);
// Do work...
}
catch(Exception ex)
{
// Error handling stuff.
}
}