gpt4 book ai didi

没有 while(true) 循环的 C# 非阻塞套接字

转载 作者:太空狗 更新时间:2023-10-29 18:17:18 24 4
gpt4 key购买 nike

我只是想做一些套接字编程,在 C# 中使用非阻塞套接字。我发现的各种样本,例如 this ,似乎使用了 while(true) 循环,但这种方法会导致 cpu 以 100% 的速度爆发。有没有一种方法可以使用事件编程风格来使用非阻塞套接字?谢谢

最佳答案

参见 MSDN 示例 here .该示例显示了如何异步接收数据。您还可以使用 Socket BeginSend/EndSend 方法异步发送数据。

您应该注意到回调委托(delegate)在 ThreadPool 线程的上下文中执行。如果回调中接收到的数据需要与另一个线程共享,例如在 Windows 窗体中显示数据的主 UI 线程,这一点很重要。如果是这样,您将需要使用例如 lock 关键字同步访问数据。

正如您所注意到的,使用非阻塞套接字和 while 循环,处理器固定在 100%。异步模型只会在有数据要发送或接收时调用回调委托(delegate)。

关于没有 while(true) 循环的 C# 非阻塞套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1665809/

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