我有一个用C#.Net编写的Windows服务。当服务启动时,我会像下面展示的一样创建一个新的线程。
new Thread(new ThreadStart(Function1)).Start();
这个线程会无限循环并执行我所需的服务职责。每天一次,我需要同时执行不同的操作,为此我的线程会像下面展示的那样生成第二个线程。
new Thread(new ThreadStart(Function2)).Start();
这个第二个线程执行的功能非常简单。它使用FileReadAllLines读取文本文件的所有行,快速处理信息并退出。
我的问题是,读取文件的第二个线程使用的内存没有被收集。我让我的服务运行了3个小时,希望GC会被调用,但什么也没有发生,任务管理器仍然显示我的服务正在使用150mb的内存。读取和处理文本文件的函数非常简单,我确信在包含文本的字符串数组中没有隐藏的引用。有人能否解释一下这是为什么?可能是另一个生成的线程无法清理自己吗?
谢谢