Mam problem z WebClient.WebClient działa bardzo wolno.
Jest bardzo powolny. PobranieString z jednej strony trwa około 3-5 sekund. Nie mam żadnych problemów z siecią.
To jest mój zmodyfikowany WebClient.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
namespace StatusChecker
{
class WebClientEx: WebClient
{
public CookieContainer CookieContainer { get; private set; }
public WebClientEx()
{
CookieContainer = new CookieContainer();
ServicePointManager.Expect100Continue = false;
Encoding = System.Text.Encoding.UTF8;
WebRequest.DefaultWebProxy = null;
Proxy = null;
}
public void ClearCookies()
{
CookieContainer = new CookieContainer();
}
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = CookieContainer;
}
return request;
}
}
}
UPDATE: W Wireshark Widziałem, że pojedynczy DownladString jest wysyłanie i odbieranie kilka tysięcy pakietów.
WebClient nie jest szczególnie powolny, problem musi być gdzieś indziej ... Być może strona, z której pobierasz jest wolna? –
Powinieneś spróbować użyć rejestratora ruchu, takiego jak WireShark, aby określić, czy opóźnienie rzeczywiście istnieje między pojedynczymi ramkami żądania i odpowiedzi (spowodowane przez spowolnienie sieci/serwera) lub dzieje się, ponieważ kod klienta źle działa i wysyła zbyt wiele żądań lub taką logikę błąd. –
Wykonuj również wiele pobrań w pętli, aby "rozgrzać" proces (np. Wyeliminuj załadowane złożenia). –