Я создаю программу, которая просматривает несколько веб-сайтов и что-то делает.
После серфинга, как 5 URL-адресов успешно, программа зависает после строки Application.Run(). Программа даже не входит в функцию обработчика и просто застревает. в настоящее время использование ЦП составляет 0.
Я попытался закрыть потоки любым возможным способом. Что я делаю неправильно?
Я делаю это так:
[STAThread]
private static void Main(string[] args)
{
for (int i = 0; i < urls.Count; i++)
{
var th = new Thread(() = >
{
var weBrowser = new WebBrowser();
weBrowser.AllowNavigation = true;
weBrowser.DocumentCompleted += Handler;
weBrowser.Navigate(urls[i]);
Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
th.Join();
}
}
И моя функция Handle:
private static void Handler(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser weBrowser = sender as WebBrowser;
var htmlDocument = weBrowser.Document;
/*do something*/
Application.Exit();
Application.ExitThread();
weBrowser.Dispose();
weBrowser.Stop();
Thread.CurrentThread.Abort();
}
Моя проблема очень похожа на эту: Application.Run() приводит к зависанию приложения
В этом вопросе также нет ответа.
Спасибо!