如何杀死所有子进程并在C#中每1小时重新启动一次

时间:2015-09-18 18:05:46

标签: c#

我有一个C#程序,每毫秒发送一个HttpWebRequest来获取一些货币报价。但是,令我惊讶的是,昨天它冻结了我的服务器并使CPU过高,就像DDOS被发送到我的服务器一样。

它还调用Java Process来更新一些函数...... 这就是我目前杀死Java进程的方式:

Process[] processesByName = Process.GetProcessesByName("java");
    for (int i = 0; i < (int)processesByName.Length; i++)
            {
                processesByName[i].Kill();
            }

如何最好的方法来杀死像Java进程一样的所有子进程并且每小时都杀掉所有线程?

...谢谢

1 个答案:

答案 0 :(得分:3)

尝试并改进您的设计。一种方法可能是:

在客户端

客户端应订阅服务器并只是监听从服务器返回的值。此外,客户端应该定期向服务器发送一个简单的确认包,让它知道它还活着。

在服务器端

让服务器保留已订阅特定货币信息的客户地址列表。然后,它可以继续向所有已订阅它的客户发送有关该货币的最新信息。它可以取消那些没有在很长时间内发送确认的客户的订阅,假设他们不再活着。

优势

您不会使服务器充满请求。相反,你告诉它开始或停止发送货币信息。这减少了消息传递。并希望能解决你的其他问题。