HttpClient正在制作我的RAM& CPU在火中

时间:2018-02-10 09:18:30

标签: c# httpwebrequest cpu ram

我正在使用下面的方法发出大量的帖子请求,但是由于RAM / CPU的使用率过高(100%),它正在使我的程序崩溃。

这是我目前的代码:

WebProxy webProxy = new WebProxy(proxy, false)
{
    UseDefaultCredentials = true,
};

HttpClient proxyClient = null;
HttpClientHandler httpClientHandler = new HttpClientHandler()
{
    Proxy = webProxy,
    UseDefaultCredentials = true,
};

proxyClient = new HttpClient(httpClientHandler);

return proxyClient.PostAsync(targetURL, new StringContent(data, Encoding.UTF8, "application/json")).Result.Content.ReadAsStringAsync().Result;

这是我最后尝试过的(而不是return proxyClient.PostAsync...):

string request = proxyClient.PostAsync(targetURL, new StringContent(data, Encoding.UTF8, "application/json")).Result.Content.ReadAsStringAsync().Result;

proxyClient.Dispose();
httpClientHandler.Dispose();

return request;

经过多次搜索,我无法弄清楚原因。 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

StéphanieAutire,重要的是要注意您的实施可能会有所不同。您还可以创建一个可重用实例池。但是可以在此代码中表达一般概念。

public sealed class HttpService
    {
        private static readonly HttpClient instance = new HttpClient();

        // Explicit static constructor to tell C# compiler
        // not to mark type as beforefieldinit
        static HttpService()
        {
        }

        private HttpService()
        {
        }

        public static HttpService Instance
        {
            get
            {
                return instance;
            }
        }
    }

我想留下一些有用的参考资料,帮助您找到有关此主题的更多信息,并实施完全满足您需求的解决方案。

<强>参考

Correct way of using HttpClient

这个答案可能是这个问题的一个很好的指导。先检查一下。