2009-02-19 8 views
1

J'ai une application qui fait plusieurs demandes simultanées à une ressource Web en utilisant HttpWebRequest de manière asynchrone. Même si j'ai défini la propriété timeout de mon instance HttpWebRequest pour dire 5 secondes, parfois quand async appelle BeginGetRequestStream, obtenir le flux peut prendre beaucoup plus de temps que cela et cela me cause un problème. Y a-t-il un moyen de limiter le temps qui peut être nécessaire pour demander le flux? De plus, si j'obtiens le flux et que je décide d'abandonner complètement la requête en n'appelant jamais BeginGetResponse, y a-t-il des ramifications à cette action?Arrêt d'un HttpWebRequest asynchrone

Répondre

0

vous pouvez utiliser cette

ManualResetEvent allDone = new ManualResetEvent(false); 
bool isRequestFnishedInCorrectTime=allDone.WaitOne(5000); 
if(isRequestFnishedInCorrectTime==false) 
    request.Abort(); 
else 
    //request success 

le point important ici après avoir réponse que vous devez définir ceci:

allDone.Set(); 

si la demande ne peut pas terminer en 5 secondes demande abandonnera.