gpt4 book ai didi

C#等待一个事件

转载 作者:行者123 更新时间:2023-11-30 20:15:20 26 4
gpt4 key购买 nike

<分区>

我正在为旧的照明控制台开发 .NET Core 中的接口(interface),目前正在实现数据包。此接口(interface)/API 的基本思想如下:客户端在一个 UDP 端口上发送其数据包,控制台以错误代码响应。控制台通过另一个 UDP 端口发送它的数据包。

所以当我设计 API 时,我只使用了 Action<ErrorCode>作为我的回调函数。但是,当一次处理多个数据包时,这种方法不太实用。

我的 UdpClient 在接收数据包时引发了一个事件,但控制台没有返回超过 4 字节的错误代码。

所以我用 SemaphoreSlim 试过了.

我的想法是让发送者等到事件发生,再释放信号量。问题基本上是这是否是处理此问题的最快和“最干净”的方法:

// The Event-Callback:
private void Sender_Recieve(object sender, ErrorCode e)
{
lastError = e;
semaphore.Release();
}

// The SendPacket method:
public async Task<ErrorCode> SendPacketAsync(Packet packet)
{
// send packet

await semaphore.WaitAsync();

return lastError;
}

那么有没有什么方法可以更快/更好地做到这一点而不损失性能?

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