Как запустить BackgroundTask, когда приложение закрыто

Я думаю, что вы переживаете, это сочетание двух проблем. Первый из них заключается в том, что количество одновременных WebRequest соединений ограничено 2 по умолчанию. Вы можете изменить это, создав класс, полученный из WebClient, и переопределив метод GetWebRequest следующим образом:

public class ExtendedWebClient : WebClient
{
    /// <summary>
    /// Gets or sets the maximum number of concurrent connections (default is 2).
    /// </summary>
    public int ConnectionLimit { get; set; }

    /// <summary>
    /// Creates a new instance of ExtendedWebClient.
    /// </summary>
    public ExtendedWebClient()
    {
        this.ConnectionLimit = 2;
    }

    /// <summary>
    /// Creates the request for this client and sets connection defaults.
    /// </summary>
    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address) as HttpWebRequest;

        if (request != null)
        {
            request.ServicePoint.ConnectionLimit = this.ConnectionLimit;
        }

        return request;
    }
}

Вторая проблема, которую я вижу, заключается в том, что вы не закрываете / не располагаете Stream, когда вы вызываете OpenRead, так что оказалось бы, что эти два запроса не будут завершены до тех пор, пока сборщик мусора не решит использовать и не использовать эти потоки для вас.

0
задан Ralph Rojas 6 March 2019 в 15:37
поделиться