基本的には、Webページにいくつかのhtmlが現れるまで待つ必要があります。私は私のためにビジー待機に次のコードを作成しました:ビジー待機スレッドwith
public void ExecuteBusyWaitThreads()
{
foreach (Canidate canidate in allCanidates)
{
Thread newThread = new Thread(delegate()
{
BusyWait(canidate);
});
newThread.Start();
}
}
public bool BusyWait(Canidate canidate)
{
//hit that url, and wait for the claim all button to appear
string page = null;
while (found == false)
{
HttpWebRequest request = Canidate.GetHTTPRequest(canidate.URL);
//make sure we add the authentication cookes to the request
request = Canidate.AddCookiesToRequest(request, canidate.GetCookies());
page = new Canidate().GetPage(request);
if (page.ToLower().Contains("claim all"))
{
found = true;
NotifyAllThreads();
}
}
return true;
}
私は8 canidates
を持っていたのであれば、それは、ウェブページに表示するclaim all
を探しているそれぞれの8つのスレッドをオフに産卵でしょう。 found
はグローバル変数です。スレッドの1つがclaim all
を見つけたら、それらはすべて保守すべきです。
私はこのアプローチに関するいくつかの質問があります。まず、良いアプローチです。第2に、各スレッドはビジー待機機能のそれ自身の「コピー」を得るでしょう。つまり、あるスレッドが別のスレッドを優先してその関数内のデータを変更するか、関数内で宣言された変数のコピーをそれぞれ得ることができます。これらの関数の両方が同じオブジェクトの内部にあることに注意してください。
有効な技術的な質問ですが、ポーカーやオークションで不正行為を試みるように見えます。 –