我写了一个小型的内部C#程序,它在各种文件格式之间批量转换,主要依赖于其他API。目前,UI生成一个BackgroundWorker(不是线程)来处理转换,然后用作为工作者完成作业时清空的请求填充队列。队列对象本身非常小(3个字符串,告诉工作人员该做什么),并且对程序的内存占用量没有太大贡献。我的内存管理非常严格(完成后丢弃图像,并在某些时候手动进行垃圾收集)。但是,程序一次只能使用大约100 MB的内存,并且占用了大约50%的内存总CPU时间。这似乎是如果我天真地执行线程,它会很快用完系统内存(除非CLR做了某种我不知道的魔法)。防止多线程应用程序内存不足
是否有一种简单/有效的方法来产生线程来防止除了捕获OutOfMemory异常并回滚已死的线程(似乎效率很低,但没有办法在不使用大量内存的情况下保留状态)之外,系统还会耗尽内存。
我们在说多少个话题?你提到UI和一名工作人员......但这不应该是一个大问题;你是否会产生很多线程? – 2009-05-27 20:30:42