所以我有一段像
这样的代码 EventLog.WriteEntry("About to run the task");
// run the dequeued task
var task = PageRetrievals.Dequeue();
PageRetrieval retrieval = new PageRetrieval();
var continuation = task.ContinueWith(t => retrieval = t.Result);
task.Wait();
EventLog.WriteEntry("html = " + retrieval.Html.DocumentNode.OuterHtml);
WriteEntry
只是我的理智 - 检查这是否有效。但第二个没有被调用,我试图找出为什么我的代码没有达到这一点。
上面的代码块位于
的方法中MyTimer.Elapsed += new ElapsedEventHandler(MethodThatInvokesTheAboveCode);
,任务类型就像
PageRetrievals.Enqueue(new Task<PageRetrieval>(() =>
new PageRetrieval()
{
Html = PageOpener.GetBoardPage(pagenum),
Page = PageType.Board,
Number = pagenum
}
));
其中PageOpener.GetBoardPage
只是从网址获取HTML,例如
private static HtmlDocument GetDocumentFromUrl(string url)
{
var webget = new HtmlWeb();
var doc = webget.Load(url);
return webget.StatusCode == System.Net.HttpStatusCode.OK ? doc : null;
}
public static HtmlDocument GetBoardPage(int pageNumber)
{
return GetDocumentFromUrl(string.Format(BoardPageUrlFormat, pageNumber));
}
有什么关于这个看起来显然是错误的吗?