Я думаю, что этот вопрос давно остался без ответа. Столько тем с одинаковым вопросом, но не окончательным ответом.
Я нашел способ обойти эту проблему и хотел бы поделиться со всеми вами, кто все еще сталкивается с этой проблемой.
step1: создайте новую форму, скажем form2, и добавьте в нее элемент управления веб-браузера. Шаг 2: В форме 1, где у вас есть элемент управления веб-браузера, просто удалите его. Шаг 3: Теперь перейдите к Form2 и сделайте модификатор доступа для этого элемента управления веб-браузера общедоступным, чтобы к нему можно было получить доступ в Form1. Шаг 4. Создайте панель в form1 и создайте объект form2 и добавьте его в панель. Form2 frm = новая Form2 (); frm.TopLevel = false; frm.Show (); panel1.Controls.Add (FRM); шаг 5: вызывать приведенный ниже код через равные промежутки времени frm.Controls.Remove (frm.webBrowser1); frm.Dispose ();
Вот и все. Теперь, когда вы запустите его, вы увидите, что элемент управления веб-браузера загружен, и он будет регулярно удаляться, и приложение больше не будет зависать.
Вы можете добавить приведенный ниже код, чтобы сделать его более эффективным.
IntPtr pHandle = GetCurrentProcess();
SetProcessWorkingSetSize(pHandle, -1, -1);
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();