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();
                
            
Другие вопросы по тегам