だから私はコールバックを持つ非同期Webリクエストメソッドを持っています:
private void DoWebRequest(string url, string titleToCheckFor,
Action<MyRequestState> callback)
{
MyRequestState result = new MyRequestState();
// ...
// a lot of logic and stuff, and eventually return either:
result.DoRedirect = false;
// or:
result.DoRedirect = true;
callback(result);
}
(前もって指摘するだけですが、私のWebRequest.AllowAutoRedirectはいくつかの理由でfalseに設定されています)
予想できるリダイレクトの数が事前にわからないため、次のように開始しました。
private void MyWrapperCall(string url, string expectedTitle,
Action<MyRequestState> callback)
{
DoWebRequest(url, expectedTitle, new Action<MyRequestState>((a) =>
{
if (a.DoRedirect)
{
DoWebRequest(a.Redirect, expectedTitle, new Action<MyRequestState>((b) =>
{
if (b.DoRedirect)
{
DoWebRequest(b.Redirect, expectedTitle, callback);
}
}));
}
}));
}
そして今、私は脳のメルトダウンを取得しました、これを反復ループに入れて、リダイレクトがもう必要ない場合に元の呼び出し元に最後のコールバックを戻すにはどうすればよいですか?