0

これは私が毎秒呼び出すメソッドですが、完了するのにかかる時間を測定すると、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を通過することで違いが生じるかどうかはわかりません.

ページの一部だけを取得する方法はありますか?

4

0 に答える 0