1

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

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

4

1 回答 1

1

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

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

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

timer.Dispose()条线非常重要,您可以拥有多少个未处理的计时器。

于 2012-10-09T05:52:01.893 回答