我在c# WinForm程序中想实现每隔30秒自动保存文件的功能。我用的是System.Timers.Timer类。保存文件用的是StreamWriter流。但是在实现的过程中,点击button按钮可实现保存文件功能,但是在timer类中无法实现自动保存,只是建立了一个空文件。具体代码如下://设置文件每隔30秒保存一次
            System.Timers.Timer t = new System.Timers.Timer(10000);
            t.Elapsed += new System.Timers.ElapsedEventHandler(save);
            t.AutoReset = true;
            t.Enabled = true;//保存文件StreamWriter sw = new StreamWriter(@"C://123.txt");
            sw.Write(this.richTextBox1.Text);
            sw.Flush();
            sw.Close(); 

解决方案 »

  1.   

    放一个Timer控件,设置Interval为30000,Enabled设置为true,在Tick中写:
    StreamWriter sw = new StreamWriter(@"C:\\123.txt");
      sw.Write(this.richTextBox1.Text);
      sw.Flush();
      sw.Close();
      

  2.   

    每次都new StreamWriter会覆盖原文件。以下内容来自MSDN中该构造函数:path 参数可以是文件名,包括统一命名约定 (UNC) 共享上的文件。 如果此文件已存在,将覆盖它;否则,将创建一个新文件。最简单的方法是用一个static或者class级别的变量来保存StreamWriter,开始做一次初始化,并设置AutoFlush = true,中间就不用管了,往里面写内容就行了。最后在结束时调用Close就好了。
      

  3.   

    再者,System.Timers.Timer控件会产生线程问题,你的代码怎么处理的?如果用System.Windows.Forms.Timer比较好处理一些。
      

  4.   

    是的,还可以启动一个后台线程,其道理跟timer一样的