此代码中怎么可能出现此错误 - 错误:对象引用未设置到对象的实例

发布于 2024-12-10 08:25:54 字数 519 浏览 1 评论 0原文

这就是我如何调用给定函数的错误

    var CrawlPage = Task.Factory.StartNew(() =>
{
    return crawlPage(srNewCrawledUrl);
});

var GetLinks = CrawlPage.ContinueWith(resultTask =>
{
    if (CrawlPage.Result == null)
    {
        return null;
    }
    else
    {
        return ReturnLinks(CrawlPage.Result, srNewCrawledUrl, srNewCrawledPageId);
    }

});

这是我真的不明白这怎么可能的错误。我正在使用本地分配的变量,因此变量对于所有线程来说应该是线程安全的。我错了吗?

这是错误图像: 在此处输入图像描述

This is how i call that error given function

    var CrawlPage = Task.Factory.StartNew(() =>
{
    return crawlPage(srNewCrawledUrl);
});

var GetLinks = CrawlPage.ContinueWith(resultTask =>
{
    if (CrawlPage.Result == null)
    {
        return null;
    }
    else
    {
        return ReturnLinks(CrawlPage.Result, srNewCrawledUrl, srNewCrawledPageId);
    }

});

This is the error i really don't understand how is that possible. I am using local assigned variables so variables should be thread safe for all threads. Am i incorrect ?

this is the error image : enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

落在眉间の轻吻 2024-12-17 08:25:54

您最好在调用之前验证 InnerHtml 是否为 null

var GetLinks = CrawlPage.ContinueWith(resultTask =>
{
    if (CrawlPage.Result == null || CrawlPage.Result.DocumentNode == null ||  CrawlPage.Result.DocumentNode.InnerHtml == null)
    {
        return null;
    }
    else
    {
        return ReturnLinks(CrawlPage.Result, srNewCrawledUrl, srNewCrawledPageId);
    }

});

或在 ReturnLinks 方法上检查这一点

you better validate InnerHtml is null or not before calling

var GetLinks = CrawlPage.ContinueWith(resultTask =>
{
    if (CrawlPage.Result == null || CrawlPage.Result.DocumentNode == null ||  CrawlPage.Result.DocumentNode.InnerHtml == null)
    {
        return null;
    }
    else
    {
        return ReturnLinks(CrawlPage.Result, srNewCrawledUrl, srNewCrawledPageId);
    }

});

Or check this on ReturnLinks method

趴在窗边数星星i 2024-12-17 08:25:54

我正在使用本地分配的变量,因此变量对于所有线程来说应该是线程安全的。我错了吗?

事实上,将引用设为本地并不意味着该引用指向的对象突然变成本地的。其他线程(在您的问题中未显示?)可能仍在错误的时刻(在 hdDoc.DocumentNode != nullhdDoc. DocumentNode.InnerHtml!= null)。

I am using local assigned variables so variables should be thread safe for all threads. Am i incorrect ?

The fact that you are making a reference local does not mean that the object this reference points to suddenly becomes local. Other thread (not shown in your question?) might still be mutating the HtmlDocument object at just the wrong moment (between hdDoc.DocumentNode != null and hdDoc.DocumentNode.InnerHtml != null).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文