下面是我编写的一个扩展,它根据.NET Framework提供的内容提供对.NET Core UdpClient
的阻塞Receive()调用。预期的用途是将其推送到一个线程中,该线程可以被分离以等待数据并在收到数据时继续执行。
public static class UdpClientExtensions
{
public static (IPEndPoint remoteEndpoint, byte[] buffer) Receive(this UdpClient udpClient)
{
return UdpClientExtensions.ReceiveAsync(udpClient).Result;
}
internal static async Task<(IPEndPoint remoteEndPoint, byte[] buffer)> ReceiveAsync(UdpClient udpClient)
{
UdpReceiveResult udpReceiveResult = await udpClient.ReceiveAsync();
return (udpReceiveResult.RemoteEndPoint, udpReceiveResult.Buffer);
}
}
总的来说,虽然这段代码对于实现这一点感到困惑,但我担心自己上次使用C#积极开发以来,我并没有完全掌握async/await
概念。这是创建这样的东西的正确方法还是我的想法过时了,我应该以不同的方式处理这个问题?