Почему мой вызов метода Async Exception не перехватывается - PullRequest
0 голосов
/ 10 декабря 2011

Я думал, что если я оберну вызов 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");
    } 
}

1 Ответ

1 голос
/ 10 декабря 2011

Я только что запустил твой код, и исключение ловится каждый раз ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...