努力使用 return 方法与 PuppeteerSharp .Dispose()
Struggling to .Dispose() using return method with PuppeteerSharp
我正在努力 .Dispose()
并且 Chromium 正在构建并导致我的计算机崩溃,因为这是一个持续了好几天的过程。
但是,我不能将 .Dispose()
放在 return
之后,因为它将无法访问,如果我将它放在 return
之前,内容字符串将变得陈旧。
var docBContent = await renderHtmlAsync(url2);
fromDoc.LoadHtml(docBContent);
public static async Task<string> renderHtmlAsync(string url2)
{
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true
});
var page = await browser.NewPageAsync();
page.DefaultTimeout = 0;
var navigation = new NavigationOptions
{
Timeout = 0,
WaitUntil = new[] {
WaitUntilNavigation.DOMContentLoaded }
};
await page.GoToAsync(url2, navigation);
var content = page.GetContentAsync();
return await content;
}
这是出现的内容,包括到目前为止提到的解决方案:
我该如何解决这个问题?
您可以为此使用 using
块:
public static async Task<string> renderHtmlAsync(string url2)
{
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
using (Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true
}))
{
var page = await browser.NewPageAsync();
page.DefaultTimeout = 0;
var navigation = new NavigationOptions
{
Timeout = 0,
WaitUntil = new[] {
WaitUntilNavigation.DOMContentLoaded }
};
await page.GoToAsync(url2, navigation);
var content = page.GetContentAsync();
return await content;
}
}
这就像:
var myObject = new DispoableObject();
try
{
// insert code
return result;
}
finally
{
myObject.Dispose();
}
finally 中的代码总是被执行,即使在 try 块中抛出异常。
我正在努力 .Dispose()
并且 Chromium 正在构建并导致我的计算机崩溃,因为这是一个持续了好几天的过程。
但是,我不能将 .Dispose()
放在 return
之后,因为它将无法访问,如果我将它放在 return
之前,内容字符串将变得陈旧。
var docBContent = await renderHtmlAsync(url2);
fromDoc.LoadHtml(docBContent);
public static async Task<string> renderHtmlAsync(string url2)
{
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true
});
var page = await browser.NewPageAsync();
page.DefaultTimeout = 0;
var navigation = new NavigationOptions
{
Timeout = 0,
WaitUntil = new[] {
WaitUntilNavigation.DOMContentLoaded }
};
await page.GoToAsync(url2, navigation);
var content = page.GetContentAsync();
return await content;
}
这是出现的内容,包括到目前为止提到的解决方案:
我该如何解决这个问题?
您可以为此使用 using
块:
public static async Task<string> renderHtmlAsync(string url2)
{
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
using (Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true
}))
{
var page = await browser.NewPageAsync();
page.DefaultTimeout = 0;
var navigation = new NavigationOptions
{
Timeout = 0,
WaitUntil = new[] {
WaitUntilNavigation.DOMContentLoaded }
};
await page.GoToAsync(url2, navigation);
var content = page.GetContentAsync();
return await content;
}
}
这就像:
var myObject = new DispoableObject();
try
{
// insert code
return result;
}
finally
{
myObject.Dispose();
}
finally 中的代码总是被执行,即使在 try 块中抛出异常。