还有哪些其他方法可以创建任务以开始并使用下面显示的代码的相同概念获得响应:(使用 .Net 4)
var uri = new Uri(website.SiteUrl);
var myReq = (HttpWebRequest)WebRequest.Create(uri);
var task = Task<WebResponse>.Factory.FromAsync(
myReq.BeginGetResponse,
myReq.EndGetResponse,
null);
最佳答案
如果您使用的是 .Net 4.5
var task = myReq.GetResponseAsync();
对于 .Net 4.0 你可以这样写
public Task<HttpWebResponse> GetAsync(HttpWebRequest req)
{
var tcs = new TaskCompletionSource<HttpWebResponse>();
req.BeginGetResponse(e =>
{
if(e.IsCompleted)
tcs.TrySetResult((HttpWebResponse)req.EndGetResponse(e));
}, null);
return tcs.Task;
}
但我看不出有什么比您当前的代码更好的了。
关于c# - 以异步方式启动任务的其他方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18445340/