public partial class Form1 : Form
{
bool AfterDocumentCompleted = false;
int steps = 0;
public Form1()
{
InitializeComponent();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocCompletedHandlerCopy);
webBrowser1.ScriptErrorsSuppressed = true;
}
private void DocCompletedHandlerCopy(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete && e.Url == webBrowser1.Url)
{
AfterDocumentCompleted = true;
}
}
private void NavigateAndWait(string urlString)
{
AfterDocumentCompleted = false;
webBrowser1.Navigate(urlString);
while (AfterDocumentCompleted == false) Application.DoEvents();
steps += 1;
label1.Text = string.Format("{0:00000} / {1}MB", steps, Environment.WorkingSet / (1024 * 1024));
}
private void button1_Click(object sender, EventArgs e)
{
while (true)
{
NavigateAndWait("http://www.crucial.com/");
NavigateAndWait("http://www.google.com/");
NavigateAndWait("http://www.microsoft.com/");
NavigateAndWait("http://www.stackoverflow.com/");
NavigateAndWait("http://www.yahoo.com/");
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我单击Button1(所以它调用button1_Click)并等待大约1小时时,根据任务管理器消耗的RAM label1大约为1000MB(一旦点击它就大约20MB,并且增长率有点线性).WebBrowser是某种浏览器的alpha版本,任何人都不应该使用它,或者我做错了什么.如果你想知道为什么在世界上做我想做的导航永远对这些网页,这是我有一个问题,只是隔离(见我的其他问题在这里).
编辑:大约一周前我安装并卸载了IE9测试版.我认为这可能是问题的根源.刚刚在Windows Vista IE8上进行了测试,它的增长不超过80-90MB.我将重新安装Windows,我希望我不需要降级到Windows Vista.
Edit2:我终于找到了问题的原因.它不是IE9测试版.事实是我设置IE不显示任何图片.我认为不显示图片会使导航更快更轻,但显然它激活了一些bug并且消耗的内存开始像疯了一样增长.不过,随着图片,内存增长但速度慢得多.
等待大约10分钟,根据任务管理器消耗的内存大约是200MB
您通过控件使用的WebBrowser是IE.它将消耗相当多的内存,主要用于缓存内容.但你真的没有内存问题.
我运行你的应用程序并只改变了这个方法(添加Label1):
int counter = 0;
private void NavigateAndWait(string urlString)
{
AfterDocumentCompleted = false;
webBrowser1.Navigate(urlString);
while (AfterDocumentCompleted == false) Application.DoEvents();
counter += 1;
label1.Text = string.Format("{0:000} {1}", counter,
Environment.WorkingSet/ (1024*1024));
}
Run Code Online (Sandbox Code Playgroud)
当我让它运行一段时间内存稳定在75-85 MB范围内.
在评论中你提到1.6 GB,这是一个问题.但这不是这个代码.所以你有一个开始:寻找差异.
升级您的IE版本.我用Vista/32和IE8运行它,而WorkingSet不会超过90MB.(600页)
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |