C# 如何将HttpClient异步方法与WebForm';在ASP.NET 4.0中注册同步任务?

C# 如何将HttpClient异步方法与WebForm';在ASP.NET 4.0中注册同步任务?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我正在ASP.NET framework 4.0中使用HttpClient。我所看到的所有示例都是在RegisterAsyncTask中使用OnBeginXX/OnEndXXX或async/await(4.5)。我需要询问如何使RegisterAsyncTask与HtpClient的GetByteArrayAsync(或类似)一起工作。注意:这是ASP.NET 4.0 更新:刚在 Public方法PageAsyncTask(Func)使用允许处理任务的事件处理程序初始化PageAsyncTask

我正在ASP.NET framework 4.0中使用HttpClient。我所看到的所有示例都是在RegisterAsyncTask中使用OnBeginXX/OnEndXXX或async/await(4.5)。我需要询问如何使RegisterAsyncTask与HtpClient的GetByteArrayAsync(或类似)一起工作。注意:这是ASP.NET 4.0

更新:刚在

Public方法PageAsyncTask(Func)使用允许处理任务的事件处理程序初始化PageAsyncTask类的新实例。
公共方法PageAsyncTask(Func)使用允许取消任务的事件处理程序初始化PageAsyncTask类的新实例。
公共方法PageAsyncTask(BeginEventHandler、EndEventHandler、EndEventHandler、Object)使用并行执行的默认值初始化PageAsyncTask类的新实例。
公共方法PageAsyncTask(BeginEventHandler、EndEventHandler、EndEventHandler、Object、Boolean)使用指定的并行执行值初始化PageAsyncTask类的新实例。
还有其他解决办法吗

更新2:我认为4.0中不支持使用推荐的RegisterAsyncTask的TPL。需要使用


它是在.net 4.0中工作的

您不能在ASP.net 4.0上使用
异步
/
等待
。这可能意味着您也不能使用
HttpClient


因此,我建议使用
WebClient
HttpWebRequest
。这些支持ASP.NET 4.0理解的较旧的异步模式。

我知道如何做到这一点。我对RegisterAsyncTask有详细的说明。这是asp.net团队推荐的,那么Hanselman博客中的示例对您不起作用呢?@LeonidTsybert,不幸的是它是4.5我们不能在asp.net 4.0中使用Microsoft.Bcl.Async(C#5)?@user960567:不,您不能。代码将编译,但将具有未定义的行为。ASP.NET需要对其某些核心类型进行更改,以正确支持
async
/
wait
。一些细节是。好的。谢谢我将继续使用旧的APM模型。
Public method   PageAsyncTask(Func<Task>)   Initializes a new instance of the PageAsyncTask class using an event handler that enables the task to be handled.
Public method   PageAsyncTask(Func<CancellationToken, Task>)    Initializes a new instance of the PageAsyncTask class using an event handler that enables the task to be canceled.
Public method   PageAsyncTask(BeginEventHandler, EndEventHandler, EndEventHandler, Object)  Initializes a new instance of the PageAsyncTask class using the default value for executing in parallel.
Public method   PageAsyncTask(BeginEventHandler, EndEventHandler, EndEventHandler, Object, Boolean) Initializes a new instance of the PageAsyncTask class using the specified value for executing in parallel. 
var client = new HttpClient();
client.GetByteArrayAsync("url").ContinueWith(t => {
    //insert your code here
});