.NET 2.x Метод - Application.DoEvents(); - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Есть такой метод: Application.DoEvents(); - Обрабатывает все сообщения Windows, которые в данный момент находятся в очереди сообщений. Создаем консольное приложение
Листинг программы
  1. static void Main(string[] args)
  2. {
  3. var th = new Thread(() =>
  4. {
  5. try
  6. {
  7. WebBrowser WB = new WebBrowser();
  8. WB.ScriptErrorsSuppressed = true;
  9. WB.Navigate("https://www.google.ru/");
  10. Stopwatch Таймер = new Stopwatch();
  11. Таймер.Start();
  12. Console.WriteLine("Перед циклом, программа занимает " + (Process.GetCurrentProcess().WorkingSet64 / 1024).ToString() + " KB");
  13. while (true)
  14. {
  15. if (Таймер.ElapsedMilliseconds > 15 * 1000)
  16. break;
  17. Application.DoEvents();
  18. Thread.Sleep(50);
  19. }
  20.  
  21. WB.Dispose();
  22. Таймер = null;
  23. Console.WriteLine("После цикла и высвобождение памяти браузера, программа занимает " + (Process.GetCurrentProcess().WorkingSet64 / 1024).ToString() + " KB");
  24. GC.Collect();
  25. GC.WaitForPendingFinalizers();
  26. Console.WriteLine("После коллектора, программа занимает " + (Process.GetCurrentProcess().WorkingSet64 / 1024).ToString() + " KB");
  27. Thread.Sleep(-1);
  28. }
  29. catch { }
  30. Environment.Exit(0);
  31. });
  32. th.SetApartmentState(ApartmentState.STA);
  33. th.Start();
  34. Thread.Sleep(-1);
  35. }
После остановки цикла и высвобождения памяти, память все ровно остается занятой непонятно чем. Опытным путем выяснил что во всем виноват Application.DoEvents(); Если из цикла не выходить, а бесконечно гонять метод, то приложение начинает бесконечно ждать память (по чуть-чуть) Может я не правильно пользуюсь сборщиком мусора? Загружать страницу другими методами - не вариант, мне нужна поддержка обработки JS, редиректы и прочее. Использовать бибилотеки со сторонними браузера тоже не выход

Решение задачи: «.NET 2.x Метод - Application.DoEvents();»

textual
Листинг программы
  1. th.Abort();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы