gpt4 book ai didi

C# 在 UdpClient 接收上使用异步/等待

转载 作者:行者123 更新时间:2023-11-30 14:48:29 25 4
gpt4 key购买 nike

以下代码使用Task进行异步接收,并在控制台显示接收结果:

private void ReceiveMessage()
{
Task.Run(async() =>
{
using(var udpClient = new UdpClient(15000))
{
while(true)
{
var receivedResult = await udpClient.ReceiveAsync();
Console.Write(Encoding.ASCII.GetString(receivedResult.Buffer));
}
}
});
}

我想学习如何使用 async/await 函数,所以我想知道如何使用 async/await 使函数 ReceiveMessage() 异步化?

最佳答案

如果您希望整个方法都可以等待,只需将其更改为:

private async Task ReceiveMessage()
{
using(var udpClient = new UdpClient(15000))
{
while(true)
{
var receivedResult = await udpClient.ReceiveAsync();
Console.Write(Encoding.ASCII.GetString(receivedResult.Buffer));
}
}
}

您不再需要 Task.Run(),它会使用线程。不需要那个线程。该方法现在在 awaiting ReceiveAsync() 时返回给调用方。
ReceiveAsync() 完成时,该方法(最终)在 Console.WriteLine() 处恢复。

关于C# 在 UdpClient 接收上使用异步/等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41428589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com