为什么这些任务没有完成?

时间:2016-11-28 15:22:15

标签: c# .net multithreading asynchronous

所以我有一段像

这样的代码
        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));
    }

有什么关于这个看起来显然是错误的吗?

0 个答案:

没有答案
相关问题