如何在c#中有效地检查Web服务的可用性?

时间:2013-11-07 07:37:19

标签: c# web-services

我有一个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增加的影响?

1 个答案:

答案 0 :(得分:4)

请勿在{{1​​}}循环中调用Web客户端,而是使用while(...)

调用本身会产生异步:How to use HttpWebRequest (.NET) asynchronously,因此所有这些都不会涉及任何CPU密集操作。

这自然会引导您对代码进行轻微的重新架构,但这是一种可行的方法。