使用异步套接字方法时延迟

时间:2012-10-09 05:43:58

标签: c# sockets asynchronous tcp-ip

我正在使用C#,。Net Framework 3.5进行软件开发。我的应用程序一次通过TCP / IP连接到多个客户端,并从中收集一些数据。客户编号非常高(超过100 )。在我的应用程序开发过程之前,我已经做了一些研究,并且发现我必须使用异步套接字实现来实现性能和可管理性方面。

现在似乎还可以,但我目前正在寻找在向客户发送数据之前推迟延迟的最佳方法。我的应用程序有时需要等待大约2秒才能发送特定数据。现在,我只是在异步发送方法之前放置一个System.Threading.Thread.Sleep(2000);代码行。这是方便的方式还是有更好的方法?这个Sleep函数是否阻塞了我的应用程序主线程,还是只阻塞了异步套接字所属的线程。

1 个答案:

答案 0 :(得分:1)

我会使用带有匿名方法的计时器,Thread.Sleep(在大多数情况下)是邪恶的......

System.Threading.Timer timer;
timer = new Timer((cs) =>
    {
        ...asynchronous send here
        timer.Dispose();
    }, null, 2000, Timeout.Inifinite);

这意味着括号内的代码将在2000毫秒后运行一次。

timer.Dispose()行非常重要,您可以拥有多少个无关的定时器。