我在下方有一段代码可以从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
?
答案 0 :(得分:4)
您的异常未被捕获,因为对BeginInvoke的调用不会执行您的委托中的代码,它会将其排队以在ThreadPool线程上执行。当您的异常发生时,没有异常处理。你的意思是在这里使用Invoke或BeginInvoke吗?无论哪种方式将异常处理放在委托中都应该解决您的问题。
答案 1 :(得分:3)
BeginInvoke委托中的代码在不同的线程中执行,你需要在那里创建一个单独的try / catch。