我有一个使用 c# .net 4.0 创建的 windows 服务,它是一些东西的监视器 - 它上面有一个计时器,它有一个每 5 分钟运行一次的计时器。所以它有一个定时器控件,并且在定时器中有一个Elapsed事件:
private void Timer_Elapsed(object sender, System.Events.ElapsedEventArgs e)
{
FileMonitor fileMon = new FileMonitor(url);
}
发生的事情是在 FileMonitor 中,它使用 TfsTeamProjectCollection 类连接到 TFS 服务器项目:
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(url, new NetworkCredential( username, password, domain);
发生的事情是我认为这会在 Timer_Elapsed 方法结束后立即自动关闭连接,但似乎没有,并且服务器正在用完 TCP 连接,其他服务无法再连接。
所以我的问题有两个:
- 在 Windows 服务中,如果我实例化一个新类,它会在方法结束时立即销毁,对吗?
- 在这种情况下,我读到 TfsTeamProjectCollection 并没有真正关闭连接:http ://social.msdn.microsoft.com/Forums/vstudio/en-US/a0878218-d8dd-4c2a-916f-00bc5b3be2da/tfsteamprojectcollectiondisconnect-失踪- 如果是这样的话,有什么比那篇文章中建议的更好的方法来处理这个问题?
总的来说,在使用 FileMonitor 时,我应该为服务本身做些什么——我应该手动销毁它,还是让垃圾收集销毁它?