.NET Core

时间:2017-04-21 21:46:28

标签: c# .net udp async-await .net-core

下面是我编写的一个扩展,它根据.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概念。这是创建这样的东西的正确方法还是我的想法过时了,我应该以不同的方式处理这个问题?

0 个答案:

没有答案