我遇到了一个问题,我写了一个程序来抓取内部网站的数据。当前顺序运行,但由于时间太长,我现在需要同时运行它们。我已经开始阅读运行它们,因为任务是最好的方法。所以示例代码看起来像这样。
我的scrape函数返回一个DataSet
Task<DataSet> task = new Task<DataSet>(() => Scraper.Website1(IE_Object, dataset));
task.Start();
DataSet web1_ds = task.Result;
当函数Scraper.Website1()
运行时,它在尝试在输入字段中键入文本时会遇到InvalidCast异常。
当不作为任务运行时,此方法可以正常工作。我哪里错了?
编辑:
错误发生在第一个_ie.TextField()。TypeText();
if (!Globals.CheckLogin(_ie))
{
CLogger.WriteLog(ELogLevel.DEBUG, "Scraper: " + "Website1(): " + "Logging Into Site");
//enter login details
_ie.TextField("_ctl0_dnnLOGIN_txtUsername").TypeText("username");
_ie.TextField("_ctl0_dnnLOGIN_txtPassword").TypeText("password");
_ie.Link("_ctl0_dnnLOGIN_btnLogin").Click();
//confirm login
_ie.WaitUntilContainsText("Logout");
CLogger.WriteLog(ELogLevel.DEBUG, "Scrappy: " + "Synnex(): " + "Logged In");
}