.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
使用嗎?