.net 4.0 任务结果和请求响应之间的差异
我使用任务发送httprequest并捕获它们的响应。在我的代码中,我想知道(HttpWebResponse)t.Result和HttpWebResponse=(HttpWebResponse)myReq.GetResponse.net 4.0 任务结果和请求响应之间的差异,.net-4.0,parallel-processing,task-parallel-library,task,.net 4.0,Parallel Processing,Task Parallel Library,Task,我使用任务发送httprequest并捕获它们的响应。在我的代码中,我想知道(HttpWebResponse)t.Result和HttpWebResponse=(HttpWebResponse)myReq.GetResponse 以下是实际代码: public void pageCheck(WebSite webParam){ //SomeCode omitted HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(u
以下是实际代码:
public void pageCheck(WebSite webParam){
//SomeCode omitted
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse response = null;
try{
Task<WebResponse> task = Task<WebResponse>.Factory.FromAsync(
myReq.BeginGetResponse,myReq.EndGetResponse,null);
task.ContinueWith(t =>
{
//some code omitted
var responseCode = (HttpWebResponse) t.Result;
//do some things with response code
response = (HttpWebResponse)myReq.GetResponse();
//other code omitted
});
}
}
公共无效页面检查(网站网页RAM){
//省略了一些代码
HttpWebRequest myReq=(HttpWebRequest)WebRequest.Create(uri);
HttpWebResponse响应=null;
试一试{
Task Task=Task.Factory.fromsync(
myReq.BeginGetResponse,myReq.EndGetResponse,null);
task.ContinueWith(t=>
{
//省略了一些代码
var responseCode=(HttpWebResponse)t.结果;
//用响应代码做一些事情
response=(HttpWebResponse)myReq.GetResponse();
//省略其他代码
});
}
}
GetResponse执行请求并返回结果,而t.result不执行任何操作。它只包含使用BeginGetResponse/EndGetResponse的异步调用的结果
如果原始操作尚未完成,t.Result将实际阻塞,直到有结果可用。在您的情况下,这不会发生,因为ContinueWith仅在FromAsync创建的异步调用完成后执行
按原样,代码执行请求两次,一次是在调用fromsync时,另一次是在调用GetResponse时