当有全局变量时,如:protected static Dictionary<string, string> SalesMail = new Dictionary<string, string>();
每天运行程序时,会使用到这个变量,比如:往这个变量中添加数据。如果服务不停止或重新启动,这个变量会存在所记录的数据。
我遇到的问题是每天凌晨发送合同到期的提醒邮件,每天都会访问数据,对这些数据筛选,然后把续约发送邮件的邮箱放在SalesMail 变量里,数据筛选结束再发送邮件。所以出现昨天或更早时间的邮件,就是因为服务没有停止,这个变量就一直存在引用,它里面的数据也不清空。我们普通状态下,当方法调用这个变量就相当于重新实例化这个变量,当方法执行后这个变量就会回收。但服务不是这样,它一直存在,不回收。