Dispatcher.Invoke无法捕获异常

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的原因吗?

2个回答

5

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


3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接