Я думал, что если я оберну вызов EndInvoke попыткой catch, если будет сгенерирована ошибка, тогда мой блок catch справится с этим? Должно быть, я что-то делаю не так ??? Должна быть ошибка пользователя, просто не знаете что?
EDIT:
Я получаю «Исключение было необработано кодом пользователя», когда я запускаю это, что останавливает приложение. Если я покажу код, то увижу его, и он перейдет к блоку catch. Но я ожидаю, что блок catch справится с этим и не увидит необработанное исключение, которое останавливает приложение?
Любые предложения приветствуются.
class Program
{
static void Main(string[] args)
{
Action myMethod = new Action(Program.FooOneSecond);
Go("Go Method");
IAsyncResult tag =
myMethod.BeginInvoke(null, "passing some state");
try
{
myMethod.EndInvoke(tag);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
string strState = (string)tag.AsyncState;
Console.WriteLine("State When Calling EndInvoke: "
+ tag.AsyncState.ToString());
Console.Read();
}
static int Work(string s) { return s.Length; throw null; }
static void Go(string s)
{
Console.WriteLine(s);
}
static void FooOneSecond()
{
// sleep for one second!
Thread.Sleep(1000);
// throw an exception
throw new Exception("Exception from FooOneSecond");
}
}