4

我在下面有一个代码可以得到回复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是不是因为

4

2 回答 2

5

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

于 2013-01-30T03:08:41.510 回答
3

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

于 2013-01-30T03:06:23.780 回答