我正在使用C#,。Net Framework 3.5进行软件开发。我的应用程序一次通过TCP / IP连接到多个客户端,并从中收集一些数据。客户编号非常高(超过100 )。在我的应用程序开发过程之前,我已经做了一些研究,并且发现我必须使用异步套接字实现来实现性能和可管理性方面。
现在似乎还可以,但我目前正在寻找在向客户发送数据之前推迟延迟的最佳方法。我的应用程序有时需要等待大约2秒才能发送特定数据。现在,我只是在异步发送方法之前放置一个System.Threading.Thread.Sleep(2000);
代码行。这是方便的方式还是有更好的方法?这个Sleep
函数是否阻塞了我的应用程序主线程,还是只阻塞了异步套接字所属的线程。
答案 0 :(得分:1)
我会使用带有匿名方法的计时器,Thread.Sleep(在大多数情况下)是邪恶的......
System.Threading.Timer timer;
timer = new Timer((cs) =>
{
...asynchronous send here
timer.Dispose();
}, null, 2000, Timeout.Inifinite);
这意味着括号内的代码将在2000毫秒后运行一次。
timer.Dispose()
行非常重要,您可以拥有多少个无关的定时器。