线程.睡眠一会儿循环?而是在 IIS 中托管

本文关键字:IIS 一会儿 循环 线程 | 更新日期: 2023-09-27 18:32:04

我正在构建一个WPF前端,该前端与另一个充当TCP服务的EXE交互。我今天以前从未看过这个...专注于前端..

但是,当我今天看到它时,它使用了一个带有 Thread.sleep(5000) 的 While true 循环来保持活动状态并能够处理来自 GUI 的请求。然而,这似乎很荒谬。当它处于睡眠状态时,它无法响应请求,这会导致 GUI 在等待时挂起。

这不应该被暗示为在 IIS 中运行的服务或窗口的服务吗?至少这样,通过 IIS 管理控制台它的响应速度和可管理性更高?

谢谢哈罗德

线程.睡眠一会儿循环?而是在 IIS 中托管

它不应该在循环中睡觉,而应该等待新的传入请求。 IIS/ASP.NET 可以为您执行此操作,但这可能矫枉过正,并且可能会施加与其他要求冲突的托管要求。 假设您不想使用 ASP.NET,则 C# 中的服务应继承自 System.ServiceProcess.ServiceBase ,其中包含您实现的虚拟函数,这些函数被调用以启动和停止服务。 这些应该启动和停止一个或多个执行所有处理的辅助线程。 根据它所期望的连接类型,您将有不同的方式等待新请求。 假设它是原始套接字,这样的处理不应该涉及休眠,因为它应该接受带有Socket.Accept的套接字上的连接,然后使用 Socket.Receive 等待指令(请求详细信息),然后立即处理请求并返回等待新输入。 这些都不涉及睡眠,不仅可以快速响应,还可以同时响应多个请求。