これは私が毎秒呼び出すメソッドですが、完了するのにかかる時間を測定すると、1 秒未満の場合もあれば、最大 4 分かかる場合もあります。
HashSet<int> Handles = new HashSet<int> ( );
void MonitorWebsite ( )
{
string linkIdPrefix = "thread_title_";
foreach ( var lnk in this.Links )
{
doc = web.Load ( lnk );
var threadLinks = doc.DocumentNode.Descendants ( "a" )
.Where ( link => link.Id.StartsWith ( linkIdPrefix ) );
foreach ( var topic in threadLinks )
{
string id = topic.Id.Substring ( linkIdPrefix.Length ); // remove "thread_title_"
string name = topic.InnerHtml; // or link.InnerText
int handle = Convert.ToInt32 ( id );
if ( this.Handles.Contains ( handle ) == false && name.IndexOf ( "keyword", StringComparison.OrdinalIgnoreCase ) >= 0 )
{
string href = topic.GetAttributeValue ( "href", null );
this.OpenInBrowser ( href );
SoundPlayer player = new SoundPlayer ( Properties.Resources.Success );
player.Play ( );
}
this.Handles.Add ( handle );
}
}
}
時間がかからないように改善するにはどうすればよいですか?それは私の管理外ですか?これはフォーラムの Web サイトであり、プログラムの終了が遅くなると、トピックが開かれてから 1 ~ 4 分後にリンクが開きます。これはほとんどの場合、遅すぎます。他の誰かが私の前にすでに行動しているためです。
また、3 つのリンクがthis.Links
あり、それぞれthreadLinks
に 1 ページに約 40 のトピックが含まれています。これを読んで、新しいトピックが開かれているかどうかを確認しています。これらの120を通過することで違いが生じるかどうかはわかりません.
ページの一部だけを取得する方法はありますか?