我遇到了一个问题,我编写了一个程序来抓取内部网站的数据。当前按顺序运行,但由于执行此操作的时间太长,我现在需要同时运行它们。我已经开始阅读将它们作为任务运行是最好的方法。所以示例代码看起来像这样。
我的抓取函数返回一个数据集
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");
}