我是用一个
for循环连续读取文件,循环体里以下代码
string sf = "文件路径";
FileStream fs11=new FileStream(sf,FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
StreamReader sr=new StreamReader(fs11);
while(sr.Peek()>0)(读取文件内容)
sr.Close();
fs.Close();
File.Delete(sf);//统计完后删除文件
GC.Collect();可是好像内存还是往上涨,请高手指点,谢谢!

解决方案 »

  1.   

    FileStream StreamReader 
    一直在new,却没有Dispose
      

  2.   

    FileStream和StreamReader用close()方法没用吗?
    好像只有DiscardBufferedDataClose()方法,没有Dispose方法啊,怎么使用啊,请指教,谢谢!
      

  3.   

    fs11.Dispose()
    sr.Dispose()
      

  4.   

    Dispose(bool)是带参数的,用true,还是false?
      

  5.   

    Dispose()不带参数的阿你是winform还是webform的?
      

  6.   

    winform
    /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    }
      

  7.   

    在你的for循环里这样写会自动调用Dispose()using(FileStream fs11=new FileStream(sf,FileMode.Open,FileAccess.Read,FileShare.ReadWrite),StreamReader sr=new StreamReader(fs11))
    {
       while(sr.Peek()>0)(读取文件内容)
      sr.Close();
      fs.Close();
      File.Delete(sf);//统计完后删除文件 
    }
    C#2005设计秘诀条款24:使用强大而周全的using语句
      

  8.   

    我是用一个
    for循环连续读取文件,循环体里以下代码
    string sf = "文件路径";
    FileStream fs11=new FileStream(sf,FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
    StreamReader sr=new StreamReader(fs11);
    while(sr.Peek()>0)(读取文件内容)
    sr.Close();
    fs.Close();
    File.Delete(sf);//统计完后删除文件
    GC.Collect();可是好像内存还是往上涨,请高手指点,谢谢! 从你说的内容来看你已经释放了所使用的对象及相关的内存,sr.Close()基本上等于 sr.Dispose(true);两个重要的对象都被成功释放了。
    但你的内存还在往上涨,我建立你在非调试环境下运行你的程序,并且在读取完文件后等一个较长时间看内存占用会不会降低。
      

  9.   

    while(sr.Peek()>0)(读取文件内容) 
    你是如何读文件的呢?读完后做什么处理了吗?
      

  10.   

    using(FileStream fs11=new FileStream(sf,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))
    {
    using (StreamReader sr=new StreamReader(fs11))

    while(sr.Peek()>0)(读取文件内容) 
      sr.Close(); 
      fs.Close(); 
      File.Delete(sf);//统计完后删除文件 
       
            }
    }这样可以通过编译,可以这样用吗?