【发布时间】:2012-10-09 05:43:58
【问题描述】:
我正在使用 C#、.Net Framework 3.5 进行软件开发。我的应用程序一次通过 TCP/IP 连接到多个客户端并从中收集一些数据。客户数量非常多(超过 100)。在我的应用程序开发过程之前,我做了一些研究,发现我必须使用异步套接字实现来实现性能和可管理性方面。
目前看来还可以,但我目前正在寻找在向客户发送数据之前延迟的最佳方法。我的应用程序有时需要等待大约 2 秒才能发送特定数据。现在,我只是在异步发送方法之前放了一个System.Threading.Thread.Sleep(2000); 代码行。这是方便的方法还是有更好的方法?这个Sleep函数会阻塞我的应用程序主线程还是只阻塞异步套接字所属的线程。
【问题讨论】:
-
我们可以知道所需延迟的原因吗?故意拖延似乎有点奇怪
-
@AlastairPitts 我放了延迟,因为客户端机器在某些操作后需要延迟。它们在几秒钟内没有响应任何命令。
-
更好的选择是在客户端缓冲数据并在客户端准备好后使用数据。一个 asnyc tcp(或其他)客户端方式。
-
@HuseyinUslu 感谢您的想法。但是缓冲与我的情况无关。我不需要缓冲任何东西,我只需要在通过 tcp 发送数据之前等待几秒钟。我寻找了一个内置的 .NET 解决方案,但恐怕我需要实现我自己的解决方案,这很可能是一个线程使用。
标签: c# sockets asynchronous tcp-ip