Puppeteer-Sharp по-прежнему появляется много экземпляров хрома в диспетчере задач процесса, когда консольное приложение закрывается
У меня возникла проблема при использовании puppeteer: я создал консольное приложение для сканирования данных с использованием puppeteer, но когда мое приложение выключено, я все еще вижу много хрома в диспетчере задач процессов. Вы можете помочь мне решить эту проблему? благодарю вас!
3 ответа
Вы должны обернуть создание браузера с помощью блока. как это:
using(var browser = new await Puppeteer.LaunchAsync())
{
// your code here...
}
Убедитесь, что вы правильно работаете с экземпляром браузера, а также с экземплярами страницы. Каждая открытая страница должна быть закрыта (удалена), как и браузер.
Пример правильного использования:
var browser = await Puppeteer.LaunchAsync(new LaunchOptions()
{
ExecutablePath = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
});
var htmlPage = await browser.NewPageAsync();
await htmlPage.GoToAsync(url);
await htmlPage.PdfAsync(path, pdfOptions);
await htmlPage.CloseAsync();
await browser.CloseAsync();
В этом примере я запускаю экземпляр браузера, открываю одну страницу с указанным URL, загружаю ее содержимое по пути с помощью pdfOptions, правильно закрываю страницу и корректно закрываю браузер. После этих шагов в диспетчере задач не останется ни одного экземпляра Chrome.
Если что-то неясно, не стесняйтесь спрашивать:)
В конце концов, попробуйте закрыть метод браузера, к сожалению, вы не сможете завершить процессы Chrome. Вам нужно убить процесс Chrome по идентификатору (pid)
using var currentPage = new await Puppeteer.LaunchAsync();
var chromeProcess = Process.GetProcesses().FirstOrDefault(x => x.Id == currentPage.Browser.Process.Id);
if (chromeProcess != null)
chromeProcess.Kill();