【发布时间】:2013-11-07 15:51:36
【问题描述】:
我有一个 c# winform 桌面应用程序。它正在通过调用我的 [web 方法] 检查我的服务器上的消息。
由于我正在开发中,这个 [web 方法] 并不总是可供我的测试客户端使用。
尽管如此,客户端仍在调用此 [Web 方法]。
我注意到在这种情况下(在我的 PC 版本上)CPU 使用率达到 25%。
目前,我的 [web 方法] 在我的客户端上以 while(true) 循环调用。随后,[web方法]被递归调用。
这个while循环已经被一个新线程启动了。
我有一个 c# winform 桌面应用程序。它正在通过调用我的 [web 方法] 检查我的服务器上的消息。
由于我正在开发中,这个 [web 方法] 并不总是可供我的测试客户端使用。
尽管如此,客户端仍在调用此 [Web 方法]。
我注意到在这种情况下(在我的 PC 版本上)CPU 使用率达到 25%。
目前,我的 [web 方法] 在 While(true) 循环中在我的客户端上被调用。随后,[web方法]被递归调用。
这个while循环已经被一个新线程启动了。
Thread _th = new Thread(MyLoop);
_th.Start();
void MyLoop()
{
while (true)
{
if (Disconnect)
{
return;
}
string[] _requests = Shared.WSconnector.GetRequests(Shared.ActiveMac);
//do something with these server requests...
}
}
虽然我的 Web 服务中断的可能性很小,但它显然仍然会发生。
我如何保护我的客户免受这种 CPU 增加的影响?
谢谢
虽然我的 Web 服务中断的可能性很小,但它显然仍然会发生。
我如何保护我的客户免受这种 CPU 增加的影响?
【问题讨论】:
-
您能否展示一些有关如何调用此 [web 方法] 的代码。
-
您多久检查一次?如果其他机器可以访问,我们有类似的地方进行测试。您还可以在 while 循环中添加睡眠,这样它就不会撞击不可用的系统...
-
@Jite 嗨,已添加代码..
-
@Offler 您好,感谢您的反馈。我曾考虑过放入一个 thread.sleep(1000) 但只是想先在这里检查一下。对我来说,问题是通信需要尽可能实时。
标签: c# web-services