1/10 秒ごとにタイマーを実行しています ( Interval = 100
)。コントロールにサイトをロードし、ロードするWebBrowser
たびにスパン ID に情報を取得するため、無限ループになっています。私の問題は、このプロセスが長時間実行されると、メモリ リークが発生することです。
30 分で、メモリ使用量が 800MB 以上になることがあります。プログラムが実行中にメモリを継続的に使用しないようにするにはどうすればよいですか?
これが関連コードです。プロセス作成コードはまだ含まれていません。
private void buttonBid_Click(object sender, EventArgs e)
{
ID = Convert.ToInt32(textBoxID.Text);
getItem();
return;
}
private void getItem()
{
webBrowser.Url = new Uri("http://www.test.com/?id=" + ID);
webBrowser.DocumentCompleted += webBrowser_DocumentCompleted;
return;
}
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
timerLoad.Start();
return;
}
private void timerLoad_Tick(object sender, EventArgs e)
{
var elem = webBrowser.Document.GetElementById("product_" + ID);
textBoxProduct.Text = Convert.ToString(elem.InnerText);
timerLoad.Dispose();
timerLoad.Start();
}