0
        lock (lockVar)
        {

            if (done)
                return;

            if (linksvisited.Contains(webBrowser1.Url.OriginalString))
                return;

            System.Console.WriteLine("Locked: " + webBrowser1.Url.OriginalString);

            linksvisited.Add(webBrowser1.Url.OriginalString);
        }
            webBrowser1.Navigate(nextLink, null, null, "User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html)");

次のコードを使用してページを反復処理していますが、Web ブラウザー コントロールが停止し、次のページに移動しないことがあります。例外なく、何も停止することはありませんが、アクセスできる別のリンクが確実に存在します。コントロールの内部エラーと関係があると思いますが、どうやってそれをトラップするのでしょうか。私の例外ハンドラは何もキャッチしません。出力コンソールには何もありません。スクリプト エラーを無効にしました。

4

1 に答える 1

0

そのコード スニペットはどこにありますか? コントロールのイベント ハンドラーにある場合は、自分自身がデッドロックしている可能性が非常に高くなります。Web ブラウザ コントロールは、ページ読み込みのさまざまな段階で複数のイベントを発生させることができる (そして発生する) ためです。

ドキュメントの完了は、ページ上のすべてのフレームに対して発生します。(スタックオーバーフロー)

コードの不完全なセクションにコメントすることも困難です。さらに先に進む前に、組み込み関数を理解するために( Locking ) を読みます。あなたの現在の努力に幸運を。

于 2013-04-07T18:31:41.947 に答える