Xen*_*ate 6 .net c# async-await
我已经在C#中编程了一段时间了,但我无法理解新的异步/等待语言功能是如何工作的.
我写了一个这样的函数:
public async Task<SocketError> ConnectAsync() {
if (tcpClient == null) CreateTCPClient();
if (tcpClient.Connected)
throw new InvalidOperationException("Can not connect client: IRCConnection already established!");
try {
Task connectionResult = tcpClient.ConnectAsync(Config.Hostname, Config.Port);
await connectionResult;
}
catch (SocketException ex) {
return ex.SocketErrorCode;
}
return SocketError.Success;
}
Run Code Online (Sandbox Code Playgroud)
但显然,这没有意义,对吧?因为我正在等待紧接着就行的TcpClient.ConnectAsync的结果.
但我想编写我的ConnectAsync()函数,以便在其他方法中等待它本身.这是正确的方法吗?我有点迷茫.:)
我希望您已经了解了yield return创建迭代器的语法。它会暂停执行,然后在需要下一个元素时继续执行。您可以想到await做一些非常相似的事情。等待异步结果,然后继续该方法的其余部分。当然,它不会阻塞,因为它会等待。