内部のWebサイトでデータを取得するプログラムを作成したときに問題が発生しました。現在は順次実行していますが、これを実行する時間が長すぎるため、同時に実行する必要があります。タスクとしてそれらを実行することがこれを行うための最良の方法であると私は読み始めました。したがって、サンプルコードは次のようになります。
私のスクレイプ関数は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");
}