我正在使用下面的方法发出大量的帖子请求,但是由于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;
经过多次搜索,我无法弄清楚原因。 在此先感谢您的帮助。
答案 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
这个答案可能是这个问题的一个很好的指导。先检查一下。