1.读d:\test\dev.txt,想5分钟之内不刷新,避免重复读,5分钟之后刷新一下,
  重新读文本的内容,现在想出怎么将数据保存在内存,避免重复读,但不知道
  怎么每隔5分钟刷新一下,向大佬们求助。
2.顺便看看下面写的这部分内容是否能满足将数据保存。
在内存啊,小弟多谢了。private static string Content = null;
        public static string ReadTxt
        {
            get
            {
                if (Content == null)
                {
                    string[] srArray = File.ReadAllLines(@"d:\test\dev.txt", Encoding.Default);
                    for (int i = 1; i < srArray.Length; i++)
                    {
                        Content += (srArray[i] + ",t" + '\n');
                    }
                }
                char[] trimChars = new char[] { '\r', '\n' };
                Content = Content.Trim(trimChars).ToString();
                return Content;
            }
        }webservice刷新数据内存

解决方案 »

  1.   

    委托一个线程去定时刷函数
    ThreadStart thStartConvert = new ThreadStart(MyMethod2);
    thStartConvert.BeginInvoke(new AsyncCallback(AsyncCallbackMethod2),null);
    public void AsyncCallbackMethod2(System.IAsyncResult myIAsyncResult)
    {

    } public void MyMethod2()
    {   
    for(int i = 0;i < 3; i++)  //延长时间(模拟实际任务)
    {
    Thread.Sleep(300000);//五分钟=300秒=300000ms
    }
    }
      

  2.   

    使用Timer计时器,每隔5分钟调用一次
    http://blog.sina.com.cn/s/blog_48a45b950100erei.html
      

  3.   

    你好,谢谢你的回答,刚学习编程,不太清楚委托,thread.sleep()我也
    试过,但是有问题,请问就我贴出的代码,应该在哪里做出修改呢。
      

  4.   

    你好,谢谢你的回答,刚学习编程,不太清楚委托,thread.sleep()我也
    试过,但是有问题,请问就我贴出的代码,应该在哪里做出修改呢。
    不用改,应该可以
      

  5.   

    你好,谢谢你的回答,刚学习编程,不太清楚委托,thread.sleep()我也
    试过,但是有问题,请问就我贴出的代码,应该在哪里做出修改呢。
    不用改,应该可以
    你好,我还是不太理解你的意思啊,我觉得按照你的方法的话,我的函数需要做调整的,
    你能完整的写一下么,我上面贴的代码是读取文本的函数,首先判断Content == null,
    为的是防止重复读,如果不为空就直接return。
      

  6.   

    问题有问题..首先 你说的webservice呢? 我完全没看到其次 就算你有了webservice 谁去触发? 应该在触发的人那里写代码吧 而不是服务端就算你服务端写了 没人调用 还是白搭
      

  7.   


    /// <summary>
    /// SysConfig.cs 中定义的函数
    /// </summary>
    private static string Content = null;
            public static string ReadTxt
            {
                get
                {
                    if (Content == null)
                    {
                        string[] srArray = File.ReadAllLines(@"d:\test\dev.txt", Encoding.Default);
                        for (int i = 1; i < srArray.Length; i++)
                        {
                            Content += (srArray[i] + ",t" + '\n');
                        }
                    }
                    char[] trimChars = new char[] { '\r', '\n' };
                    Content = Content.Trim(trimChars).ToString();
                    return Content;
                }
            }
    /// <summary>
    /// WebService.asmx.cs
    /// 调用ReadTxt
    /// </summary>
    public string ReadTxt()
    {
       string data2 = SysConfig.ReadTxt;
       string[] buf1 = data1.Split('\n');
       //........
       //下面就是对数据做相应的处理,
       //d:\test\dev.txt这个文件是5分钟刷新一次
       //我想读一次后保存起来,避免重复读,每5分钟读一次即可,就是这样
    }
      

  8.   


    string data ="";
    while(1==1)
    {
      data=SysConfig.ReadTxt;
      Thread.Sleep(300000);
    }
      

  9.   

    是改成这样么?SysConfig.cs 中定义的函数需要修改么/// <summary>
    /// WebService.asmx.cs
    /// 调用ReadTxt
    /// </summary>
    public string ReadTxt()
    {
       while(1==1)
       {
         string data2 = SysConfig.ReadTxt;
         Thread.Sleep(300000);
       }
       string[] buf1 = data1.Split('\n');
    }
      

  10.   

    读出来xml格式的数据,在页面上浏览就是类似与这样- <dataSet>
    - <Items>
      <ItemCode>24974</ItemCode> 
      <ItemPosition>TEST1</ItemPosition> 
      <ItemType>22</ItemType> 
      <ItemName>AAA</ItemName> 
      <SysId>test1</SysId> 
      <SysName>sysid13</SysName> 
      </Items>
    - <Items>
      <ItemCode>24975</ItemCode> 
      <ItemPosition>TEST2</ItemPosition> 
      <ItemType>22</ItemType> 
      <ItemName>BBB</ItemName> 
      <SysId>test1</SysId> 
      <SysName>sysid13</SysName> 
      </Items>
      <dataSet>
      

  11.   


    while(true) 
    {  
    labe1.text=SysConfig.ReadTxt;   
    Thread.Sleep(300000); }
      

  12.   

    http://bbs.csdn.net/topics/390573177?page=1#post-395443621
    找到这个帖子,就是cao版主的那个意思,他说做时间判断,怎么做啊
      

  13.   

    已经解决了,在函数里面加了时间判断private static string _filecontent = null;
    private static DateTime _date = new DateTime(1900,1,1);
     
    private static string FileContent
    {
        get {
            if (_filecontent == null || _date.AddMinutes(5) < DateTime.Now)
            {
                _filecontent = string.Join("\r\n", System.IO.File.ReadAllLines(@"C:\1.txt"));
                _date = DateTime.Now;
            }
            return _filecontent;
        }
    }