我有一个c#winform桌面应用。它通过调用我的[web方法]检查我的服务器上的消息。
在开发过程中,我的测试客户端并不总是可以使用[web方法]。
然而,客户端仍在调用此[web方法]。
我注意到在这种情况下(在我的PC版本中)CPU使用率达到了25%。
目前我的[web方法]在while(true)
循环中在我的客户端上调用。随后,递归调用[web方法]。
此循环已由新线程启动。
我有一个c#winform桌面应用。它通过调用我的[web方法]检查我的服务器上的消息。
在开发过程中,我的测试客户端并不总是可以使用[web方法]。
然而,客户端仍在调用此[web方法]。
我注意到在这种情况下(在我的PC版本中)CPU使用率达到了25%。
目前我的[web方法]在我的客户端上以While(true)循环调用。随后,递归调用[web方法]。
此循环已由新线程启动。
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增加的影响?
答案 0 :(得分:4)
请勿在{{1}}循环中调用Web客户端,而是使用while(...)
。
调用本身会产生异步:How to use HttpWebRequest (.NET) asynchronously,因此所有这些都不会涉及任何CPU密集操作。
这自然会引导您对代码进行轻微的重新架构,但这是一种可行的方法。