关于析构函数的问题
小弟我写了一个生成验证码的方法,然后我要把在服务器端生成的图片在用户登录成功后删除,所以用了析构函数来控制,但是造成了图片显示不稳定,时有时无,请问如何解决,部分主要代码如下:请高手指点谢谢
public class ValidateCode
{
public string imgFilePath;
public string imgFileName;
public void GenerateCodeImage()
{
图片生成的方法
}
public void GetCode()
{
随即获得数组方法
}
主要是这里:
public ValidateCode(string imgFilePath)
{
this.imgFilePath = imgFilePath;
}
~ValidateCode()
{
File.Delete(this.imgFilePath + this.imgFileName);
}
}
------解决方案--------------------还有你的方式有些问题,bs程序是请求应答类型,客户端请求,服务器应答完毕后会认为应用已经结束,自然会回收你的引用。考虑用session纪录图片信息,session_end时删除
------解决方案--------------------应该继承IDisposable,实现Dispose方法吧.
------解决方案--------------------web程序(根据.net原理)的工作原理和客户端程序不同,当有用户请求某个页面的时候大致过程如下:
1.在服务器上临时构造该页面(缓存的页面除外)
2.将生成的页面呈现给客户端
3.销毁资源
.net自动垃圾回收不需要析构函数,最多调用Dispose方法告诉垃圾回收器可以回收这个资源