gpt4 book ai didi

c# - 线程保持内存

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:36 25 4
gpt4 key购买 nike

<分区>

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(...) 用于所有 WaitHandle

问题是内存没有被释放。它只是累积,直到最终我得到一个“内存不足”的异常。

我不一定要寻找解决方案,只是看看是否有人知道问题可能出在哪里。

在 WPF 3.5 上运行。

谢谢

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com