这是我的场景:我有一个静态对象,它将连接到并发许可证服务以获取许可证。我的 WCF 服务中的一些非静态方法需要此许可证。
这里的问题是,我知道这个静态对象会一直存在,并且只要这个对象在使用中,许可证就会一直保留。但是我还需要在释放静态对象之前通过调用并发许可证服务的释放方法来释放此许可证。
如果我不释放静态对象中持有的许可证,并发许可证服务将在我无法控制的空闲时间后拒绝再次重新颁发许可证......
现在问题来了。WCF 服务器端是否有一个事件让我知道 IIS 或任何即将处置或回收静态对象的东西,以便我可以在处置或回收之前释放并发许可证服务中的许可证???
在处理这个静态对象时我应该记住什么?我应该使用Lock()
还是Using()
??
换句话说,有没有办法为这种情况制作一个静态析构函数?这个析构函数很可能应该由 IIS 调用。