2
我在搞乱UDP侦听器和TAP。具有基于任务的异步模式的UDP侦听器
我有一个类负责监听传入的UDP并可以启动和停止。 在start()方法简单地调用下面的方法
private async void Listen()
{
var resp = await _udpClient.ReceiveAsync().ConfigureAwait(continueOnCapturedContext: false);
var eventHandler = PacketReceived;
if (eventHandler != null)
eventHandler(this, new UdpPacketReceivedEventArgs(resp));
if (_running)
Listen();
}
这是正确的吗?我有点担心我可能会耗尽线程池,因为线程正在通过产生一个新的Listen()调用而保持活动状态。
IO完成端口没有线程“等待”IO完成。线程“等待”是一个正在使用的线程。重叠IO拥有自己的线程池,并在IO完成时使用其中一个线程。 –
@PeterRitchie:谢谢你的评论,你能解释一下这个东西吗?好像我没有深刻的理解。或者甚至你可以为这个问题发布另一个更正确的答案? –
感谢您的回答。至少运行任务的线程还活着?当它被告知再次运行Listen()时,它为什么会死? – kasperhj