gpt4 book ai didi

c# - 管理线程列表

转载 作者:行者123 更新时间:2023-12-03 12:57:38 25 4
gpt4 key购买 nike

我有一个应用程序 (.Net 3.5),它创建线程以将某些内容写入数据库,以便 GUI 不会阻塞。所有创建的线程都添加到一个列表中,以便我可以在应用程序关闭时为每个线程等待 (Thread.Join)(应用程序关闭时可能并非所有线程都完成,因此应用程序必须等待它们)。
由于列表的原因,如果创建的线程过多(OutOfMemoryException),我会遇到一些严重的问题。我尝试从列表中删除完成的线程,但不知何故不起作用。
是否有更好的方法来管理线程列表,以便在线程完成后将其删除?

编辑:似乎已修复它(每当添加线程时调用):
lock (m_threadLock)

{

m_threads.RemoveAll(x => x.ThreadState == ThreadState.Stopped);

}

最佳答案

你不能在保留旧线程的同时继续创建新线程,你会耗尽内存。

I tried removing finished threads from the list, but somehow that didn't work.



那是正确的道路,为什么它不起作用?
  • 将代码添加到您的线程方法以发出完成信号(可能将其从列表中删除)。
  • 寻找自定义线程池。发布了几个实现。您可以使用一个简单的并控制 Background=false 和其他详细信息。
  • 关于c# - 管理线程列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673454/

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