此代码中怎么可能出现此错误 - 错误:对象引用未设置到对象的实例
这就是我如何调用给定函数的错误
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 :
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您最好在调用之前验证 InnerHtml 是否为 null
或在 ReturnLinks 方法上检查这一点
you better validate InnerHtml is null or not before calling
Or check this on ReturnLinks method
事实上,将引用设为本地并不意味着该引用指向的对象突然变成本地的。其他线程(在您的问题中未显示?)可能仍在错误的时刻(在
hdDoc.DocumentNode != null
和hdDoc. DocumentNode.InnerHtml!= null
)。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 (betweenhdDoc.DocumentNode != null
andhdDoc.DocumentNode.InnerHtml != null
).