我有一个用 C# 和 c++ 开发的窗口应用程序。它有客户端版本和服务器版本。客户端版本安装在 XP 系统上,服务器版本安装在 Windows 2003 系统上。但是客户端系统中的 UI 大部分时间都挂起。我不知道是什么原因
那么我的文件夹空间有问题吗?每当客户端系统发生挂起时,我都会检查任务管理器、进程选项卡的内存列,在那里我可以看到我的应用程序 exe 占用了最大的空间
我已经进行了病毒扫描,并从任务管理器中强行关闭了挂起的应用程序。但每当我再次启动时,它大部分时间都会挂起
编辑
所以这里我的问题是主机文件上的任何操作都会导致客户端速度变慢在服务器中我可以看到主机文件中的条目如下所示 编辑
我是否需要从 MMC 启用任何服务(即 services.msc)才能使客户端和服务器之间建立正确连接,我现在已经启动了 Remoteregistry 服务?一些 Windows 安全更新正在等待处理,这会导致闪烁之类的问题吗?
答案1
我不使用 C#,但一般来说,当 UI 更新代码没有被干净地分离到与用于网络 IO(或其他非 UI 任务)的线程不同的线程中时,应用程序的 UI 可能会挂起。在这种情况下,对网络调用的响应缓慢可能会导致 UI 变得无响应,因为网络调用正在阻塞 UI 线程。这意味着 UI 事件(按键、鼠标点击)被阻塞。
IO(例如网络 IO)通常可以采用阻塞或非阻塞方式编写。使用非阻塞方式可能会减轻没有在其自己的线程上编写 UI 更新代码的影响。
因此,编写不良的应用程序、较慢的网络或配置错误的客户端(例如,服务器地址不正确)的组合可能会导致这种情况。
我想说,除非 CPU 利用率达到 100%,否则编写良好的应用程序的 UI 不应该挂起。
但是,这只是猜测。任何猜测正确的几率都很小。为了获得更好的答案,您可能需要提供有关应用程序的更多详细信息(名称、如果是零售软件,则为作者)以及 UI“挂起”的确切时间和方式。