Имеется такой цикл с подпиской на событие:
int nach = Convert.ToInt32(strNtext.Text);
int konech = Convert.ToInt32(strAlltext.Text);
for (int i = nach; i <= konech; i++)
{
//Excel.Range rng2 = sheet.Range["B4"];
//Excel.Range rng3 = sheet.Range["C4"];
richTextBox1.AppendText("Загружаем страницу");
string urlo = "http://localhost:888/i.html";
webBrowser1.Navigate(urlo);
result = strestext.Text + i.ToString();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
В событии слушается клик по элементу и внесении в Excel. Но сейчас нет ожидания выполнения этого события. Тоесть алгоритм должен быть такой. i=1 => ждём клика и занесение в excel из события => i++ и заново с i=2 и.т.д
Абстрагируясь от вопроса, зачем это вообще вам надо, я покажу пример асинхронного ожидания события
public class MyForm : Form
{
WebBrowser _wb;
public MyForm()
{
this.Width = 500;
this.Height = 500;
_wb = new WebBrowser() { Width = 500, Height = 500 };
this.Controls.Add(_wb);
LoadAndClick();
}
private async void LoadAndClick()
{
for (var i = 0; i < 10; i++)
{
var uri = $"https://google.ru?{i}";
var tcs = new TaskCompletionSource<int>();
WebBrowserDocumentCompletedEventHandler docCompleted = null;
docCompleted = (s, e) =>
{
try
{
// отписываемся
this._wb.DocumentCompleted -= docCompleted;
// тут какой то полезный код
}
finally
{
// отмечаем, что событие отработало.
tcs.TrySetResult(0);
}
};
this._wb.DocumentCompleted += docCompleted;
_wb.Navigate(uri);
await tcs.Task; // ждем, когда событие сработает.
Debug.WriteLine($"{uri} processed");
}
}
}
В примере мы грузим странички одну за другой. Причем следующая загрузка начнется только после того, как предыдущая закончится.
Архитектурная схема не очень, разумнее всю логику унести в событие webBrowser1_DocumentCompleted, или использовать переменную в виде флага выставляемого из webBrowser1_DocumentCompleted и по ней продолжать обработку, но это не красиво. Использовать эвенты? Как архитектуру логики.
и судя по string urlo грузиться в цикле будет одна страница, но много раз :)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей