我已经用 C# 编程了一段时间,但我无法理解新的async / await语言功能是如何工作的。
我写了一个这样的函数:
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;
}
但显然,这没有意义,对吧?因为我正在等待 TcpClient.ConnectAsync 的结果之后立即上线。
但我想编写我的ConnectAsync()函数,以便它本身可以在另一种方法中等待。这是正确的方法吗?我有点失落。:)