Fermeture de StreamReader prend beaucoup de temps?
Bonjour,
J'utilise un StreamReader pour lire un flux de données volumineux (+ 5 MO).
Mon problème est le temps que prend l'instruction streamReader.Close() pour se terminer (environ 10 minutes), sachant ue tout le traitement (initialisation du flux, lecture avec streamReader.Read(), et le traitement des données) ne me prend qu quelques secondes.
voici un extrait de mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(analyserURL);
string parameters = string.Format("mode={0}&wt={1}&terms={2}&text={3}", mode, "full", HttpUtility.UrlEncode(terms), HttpUtility.UrlEncode(xhtml));
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = parameters.Length;
webRequest.Timeout = timeout;
using (Stream requestStream = webRequest.GetRequestStream())
{
requestStream.Write(Encoding.UTF8.GetBytes(parameters), 0, parameters.Length);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
using (StreamReader streamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
{
while (streamReader.Peek() != -1)
{
//string line = streamReader.ReadLine();
string line = ReadLineStream(streamReader); //une méthode qui boucle sur streamReader.read() jusqu'à saut de ligne
// traitement des données
}
// streamReader.DiscardBufferedData();
streamReader.Close(); //cette instruction prend 10 minutes pour se terminer
}
webResponse.Close();
requestStream.Close();
} |
Si j'enlève streamReader.close() (fermeture implicite par using), le problème reste le même du fait que le temps passé est reporté sur l'accolade de using.
Merci de votre aide.