日期:2014-05-19  浏览次数:20680 次

关于析构函数的问题
小弟我写了一个生成验证码的方法,然后我要把在服务器端生成的图片在用户登录成功后删除,所以用了析构函数来控制,但是造成了图片显示不稳定,时有时无,请问如何解决,部分主要代码如下:请高手指点谢谢
  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方法告诉垃圾回收器可以回收这个资源