1

HttpWebRequest を非同期的に使用して、Web リソースに対して複数の同時要求を行うアプリケーションがあります。HttpWebRequest インスタンスのタイムアウト プロパティを 5 秒に設定しましたが、BeginGetRequestStream を非同期で呼び出すと、ストリームの取得にそれよりもはるかに長い時間がかかり、混乱を招くことがあります。ストリームを要求するために使用できる時間を制限する方法はありますか? また、ストリームを取得し、実際に BeginGetResponse を呼び出さずにリクエストを完全に放棄したいと判断した場合、その一連のアクションに影響はありますか?

4

1 に答える 1

0

あなたはこれを使うことができます

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

ここで重要な点は、応答を取得した後、これを設定する必要があることです。

allDone.Set();

リクエストが 5 秒以内に終了できない場合、リクエストは中止されます。

于 2015-11-19T15:47:13.277 に答える