Убедитесь, что вы правильно работаете с экземпляром браузера, а также с экземплярами страницы. Каждая открытая страница должна быть закрыта (удалена), как и браузер.
Пример правильного использования:
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.
Если что-то неясно, не стесняйтесь спрашивать:)