3

我们有一个程序(Form)在很多场合使用了许多后台工作线程(我们不能重用它们)。

我们注意到程序的内存不断增长并使用内存分析器分析它我注意到有许多后台工作对象。

我认为如果我使用“使用”语句可以解决问题并处理对象,但它似乎不起作用。

using (BackgroundWorker bgwConnectClient = new BackgroundWorker())
{
    bgwConnectClient.DoWork += new DoWorkEventHandler(bgwConnectClient_DoWork);
    bgwConnectClient.RunWorkerAsync();
}

任何想法??

4

1 回答 1

3

您有内存泄漏,因为您的对象挂接到一个事件。你需要改变你的代码

BackgroundWorker bgwConnectClient = new BackgroundWorker();
bgwConnectClient.DoWork += new DoWorkEventHandler(bgwConnectClient_DoWork);
bgwConnectClient.RunWorkerAsync();

在您完成工作并且不再需要 bgwConnect 之后

做这个

bgwConnectClient.DoWork -= new DoWorkEventHandler(bgwConnectClient_DoWork);
于 2013-09-05T05:19:28.977 回答