JavaScript で可能なアプローチが C# でも使用できるかどうか疑問に思っています。
JavaScript アプリケーションでは、大量の Web リクエストを次々に行う必要がある場合、for ループを回避し、代わりにスタック (配列) とイベントを使用することで、UI の応答性を維持できます。次の URL は、成功イベント ハンドラーの配列からポップされ、スタックが空になるまで別の要求を行い続けます。スタックを使用してC#で同様のアプローチをとることはできますか? 以下は合法ですか?
urlStack .... // stack of urls
myRequestMaker = new WebRequestMaker(); // my custom object
myRequestMaker.ResponseReceived += (s,e) =>
{
// e contains info whether the request succeeded, failed, or timed out
url = pop another url from urlStack if it's not empty
(s as WebRequestMaker).MakeWebRequest(url);
}
url = pop first url from urlStack
myRequestMaker.MakeWebRequest(url);
( ReponseReceivedイベントは、要求がタイムアウトしたときにも WebRequestMaker オブジェクトによって発生します)
JavaScript では、このアプローチを使用して最大再帰制限に達することができます。これを回避するために、成功イベント ハンドラ内で行われたメソッド呼び出しを SetTimeout でラップすることができます。ResponseReceived イベントハンドラ内でmyRequestMaker のMakeWebRequestメソッドを呼び出すと、同様の問題が発生しますか?