Dispatcher.Invoke不会捕获异常

时间:2013-01-30 03:00:32

标签: c# windows-phone-8

我在下方有一段代码可以从HTTP GET获得回复:

private void ResponseReady(IAsyncResult aResult)
{
    HttpWebRequest request = aResult.AsyncState as HttpWebRequest;

    try
    {
        this.Dispatcher.BeginInvoke(delegate()
        {
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(aResult);

没有连接时的问题,它将停在response行。它没有捕获异常。是因为Dispatcher.Invoke

2 个答案:

答案 0 :(得分:4)

您的异常未被捕获,因为对BeginInvoke的调用不会执行您的委托中的代码,它会将其排队以在ThreadPool线程上执行。当您的异常发生时,没有异常处理。你的意思是在这里使用Invoke或BeginInvoke吗?无论哪种方式将异常处理放在委托中都应该解决您的问题。

答案 1 :(得分:3)

BeginInvoke委托中的代码在不同的线程中执行,你需要在那里创建一个单独的try / catch。