C# 同步使用HttpClient会导致内存泄漏

C# 同步使用HttpClient会导致内存泄漏,c#,xamarin.ios,mono,C#,Xamarin.ios,Mono,当尝试在循环中同步调用HttpClient.SendAsync()时,进程使用的内存会不断增长(如仪器中的“活动”所述)。 下面是我可以创建的最简单的复制(在新的Xamarin.iOS单视图应用程序中添加在ViewController.ViewDidLoad()的末尾) 使其异步可以解决以下问题: Task.Run(async () => { var httpClient = new HttpClient(); httpClient.BaseAddress = new Ur

当尝试在循环中同步调用
HttpClient.SendAsync()
时,进程使用的内存会不断增长(如仪器中的“活动”所述)。 下面是我可以创建的最简单的复制(在新的Xamarin.iOS单视图应用程序中添加在
ViewController.ViewDidLoad()的末尾)

使其异步可以解决以下问题:

Task.Run(async () =>
{
    var httpClient = new HttpClient();
    httpClient.BaseAddress = new Uri("https://www.google.com/", UriKind.Absolute);
    var requestUri = "images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
    while (true)
    {
        using (var httpResponseMessage = await httpClient.GetAsync(requestUri).ConfigureAwait(false))
        {
            Console.WriteLine(httpResponseMessage.Content.Headers.ContentLength);
        }
        await Task.Delay(10).ConfigureAwait(false);
     }
});
在这一点上,我不确定同步代码中是否会出现泄漏,或者它是mono中的一个实际错误

环境:

  • Microsoft Visual Studio Professional 2019版本16.5.3
  • Xamarin.iOS和Xamarin.macsdk13.16.0.13(b750)

如果您认为自己发现了一个bug,请在Xamarin中提交一个问题Github@Jason可以,我只是想先运行它,以防我错过了一些明显的东西。我能说的是,当运行.net core 3.0.1时,windows 8.1上没有任何漏洞,所以,应该没有什么明显的错误您的同步版本没有延迟10毫秒,因为您没有等待该任务。@weichch正确点,修复。但是问题仍然存在。如果您认为您发现了一个bug,请在Xamarin中提交一个问题Github@Jason可以,我只是想先运行它,以防我错过了一些明显的东西。我能说的是,当运行.net core 3.0.1时,windows 8.1上没有任何漏洞,所以,应该没有什么明显的错误您的同步版本没有延迟10毫秒,因为您没有等待该任务。@weichch正确点,修复。但问题仍然存在。
Task.Run(async () =>
{
    var httpClient = new HttpClient();
    httpClient.BaseAddress = new Uri("https://www.google.com/", UriKind.Absolute);
    var requestUri = "images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
    while (true)
    {
        using (var httpResponseMessage = await httpClient.GetAsync(requestUri).ConfigureAwait(false))
        {
            Console.WriteLine(httpResponseMessage.Content.Headers.ContentLength);
        }
        await Task.Delay(10).ConfigureAwait(false);
     }
});