.NET中有很多类使用旧的Asynchronous Programming Model (APM),其中“不再推荐用于新开发”。 APM使用开始/结束方法对,End方法将IAsyncResult对象作为参数。其中一类是TcpClient,使用它可以异步连接,像这样:从异步编程模型(APM)转移到基于任务的异步模式(TAP)
private void SomeMethod()
{
this.tcpClient = new TcpClient();
IAsyncResult result = this.tcpClient.BeginConnect(ip, port, EndConnect, null);
}
private void EndConnect(IAsyncResult asyncResult)
{
this.tcpClient.EndConnect(asyncResult);
// ... do stuff ...
}
的Task-based Asynchronous Pattern (TAP)是通过使用async
和await
关键字的促进异步编程的更现代的形式。
所以,如果你有一个像TcpClient的一类,它采用APM模型和不公开任何的任务,如何将一个去适应它的异步方法的TAP,使他们能够与async
/await
使用吗?