0

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

我的抓取函数返回一个数据集

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");
}
4

0 回答 0