以下代码每秒调用多次。如果客户端。PostJsonAsync引发OperationCanceledException(例如,由于超时),然后引发Task。返回FromResult(默认值(T)),但如果发生这种情况,内存使用率(和CPU使用率)会迅速开始攀升,直到抛出OutOfMemoryExceptions为止(即使没有抛出异常,内存似乎总是会攀升,尽管速度要慢得多)。代码是否存在任何可能导致内存泄漏的问题(或过度使用)?
private async Task<T> GetResponse<T>(Dictionary<string, object> args, string method)
{
try
{
var response = await _client.PostAsJsonAsync(method, args);
return await Deserialise<T>(response.Content);
}
catch (OperationCanceledException)
{
return await Task.FromResult(default(T));
}
}
private async Task<T> Deserialise<T>(HttpContent content)
{
using (var stream = await content.ReadAsStreamAsync())
using (var streamReader = new StreamReader(stream))
using (var reader = new JsonTextReader(streamReader))
{
var serializer = new JsonSerializer();
try
{
return serializer.Deserialize<T>(reader);
}
catch (JsonSerializationException e)
{
throw new ClientException("Failed to deserialize object, see inner exception and content for more details", e) { Content = reader.ReadAsString() };
}
}
}