/// <summary> /// アクセスのペースを調整するために許可時間のタイムスタンプを設定する /// </summary> /// <param name="cReq"></param> private static void WaitSiteAccess(CrawlerRequest cReq) { var key = cReq.Request.RequestUri.Host; if (string.IsNullOrEmpty(key)) return; SiteAccessBlock site; lock (DicSiteAccessBlock) { if (!DicSiteAccessBlock.TryGetValue(key, out site)) { site = new SiteAccessBlock(); DicSiteAccessBlock.Add(key, site); } } lock (site) { var wait = site.PassTime - DateTimeOffset.Now; if (wait > TimeSpan.Zero) Thread.Sleep(wait); site.PassTime = DateTimeOffset.Now + PassSpan; } }
/// <summary> /// コンストラクタ。 /// </summary> /// <param name="cReq"></param> /// <param name="res"></param> public CrawlerResponse(CrawlerRequest cReq, WebResponse res) { Request = cReq; Response = res as HttpWebResponse; }