C #: остановка цикла до события - PullRequest
1 голос
/ 12 июля 2011

У меня есть цикл for, а внутри есть метод навигации для браузера. и предполагается, что загружаются разные сайты, но проблема в том, что он начнет загружать 1 сайт и, прежде чем он загрузит его, загрузит другой сайт. поэтому мне нужно сделать паузу, пока она не будет завершена.

Я начал писать событие, когда событие ProgressChanged достигло 100% ... чем я решил, что понятия не имею, что делать дальше, но я думаю, что это начало. Пожалуйста, помогите, спасибо!

Редактировать: я использую формы, как сказал Роланд.

1 Ответ

3 голосов
/ 12 июля 2011

Я предполагаю, что вы занимаетесь программированием оконных форм.Событие, которое вы хотите: DocumentCompleted Вот пример:

public Uri MyURI { get; set; }

public Form1()
{
    InitializeComponent();

    MyURI = new Uri("http://stackoverflow.com");
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
    webBrowser1.Url = MyURI;
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if(e.Url == MyURI)
        MessageBox.Show("Page Loaded");
}

Для списка URI все просто.

public int CurrentIndex = 0;
List<Uri> Uris;

public Form1()
{
    InitializeComponent();

    Uris = new List<Uri> { new Uri("http://stackoverflow.com"), new Uri("http://google.com/") };

    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

    webBrowser1.Url = Uris[CurrentIndex];
}

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    WebBrowser browser = (WebBrowser)sender;
    if (e.Url == Uris[CurrentIndex])
    {
        CurrentIndex++;
        if (CurrentIndex < Uris.Count)
        {
            browser.Url = Uris[CurrentIndex];
        }
    }
}
...