void Method1(object sender, DoWorkEventArgs e)
{
var list1 = (List<some objects>)e.Argument;
var list2 = new List<WaitHandle>();
foreach (var thing in list1)
{
var ws = new ManualResetEvent(false);
list2.Add(ws);
dispatcher.BeginInvoke(DispatcherPriority.Background,
new RunDelegate(Method2), thing, ws);
}
WaitHandle.WaitAll(list2.ToArray());
ConvertList1ToPDF(list1);
}
// ------------------------------------------------------------------
void Method2(Thing thing, ManualResetEvent handle)
{
var class = thing;
Class.RenderImages();
PDFCount++;
UpdateStatusMessage("Do something " + PDFCount + " of " +
NumberofPfdToCreate.Count() + " compounds");
handle.Set();
}
我有多个线程不释放内存的问题。我正在从数据对象创建 PDF 图表。
安排是我循环遍历数据对象。对于每个数据对象,我创建一个ManualResetEvent
并将其添加到list2
. 然后我用 启动一个调度程序BeginInvoke
,并将ManualResetEvent
对象作为参数传递。
然后我有一个WaitHandle.WaitAll(...)
for all WaitHandle
s。
问题是内存没有被释放。它只会累积,直到最终我得到一个“内存不足”异常。
我不一定要寻找解决方案,只是看看是否有人知道问题可能是什么。
在 WPF 3.5 上运行。
谢谢