运行线程以在DAL中检索正确的连接字符串的最佳实践

时间:2012-01-08 08:15:13

标签: c# .net multithreading

我在项目中创建了一个类,它打开一个线程并连续轮询连接,如果连接关闭,它会检索到另一个服务器的连接字符串。我想知道实现这一目标的最佳做法是什么。我有一个名为ServerMonitor的类,它有一个启动和停止。我想将这一切都放在DAL中,因为它与连接字符串有关,并且由我创建的名为ConnectionStringFactory的类调用。我不能把它放在BLL或UI中,因为它需要由DAL中的类访问。

ServerMonitor中的stop方法关闭线程并释放资源。我认为最好的方法是启动线程是将它放在ServerMonitor的静态构造函数中,但我不知道何时停止它。有没有办法从DAL检测和应用程序结束事件,或者有什么方法可以知道程序停止了,我需要关闭线程吗?

2 个答案:

答案 0 :(得分:0)

如果程序停止,您可能不必担心停止它。因为所有资源都被假设由.net框架回收。

它认为在服务器监视器类中提供一个方法可能更合适,以便在需要停止它时调用更高级别的UI线程。

答案 1 :(得分:0)

根据您的描述,我认为您不需要关闭该主题。

我认为当您的线程检测到连接已关闭时,它应获取下一个服务器的连接字符串,验证它是否可用,然后将该连接字符串记录在DAL中的静态位置。

另外,要启动你的线程,你肯定应该在静态构造函数中使用它,或者,如果它在IIS中托管,则在global.asax的Application_Start中启动它。

另一种方法是在第一次发出需要连接字符串的请求时启动进程(即在连接字符串中获取访问者)。