欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解C#中的System.Timers.Timer定时器的使用和定时自动清理内存应用

程序员文章站 2023-11-29 12:08:40
项目比较大有时候会比较卡,虽然有gc自动清理机制,但是还是有不尽人意的地方。所以尝试在项目启动文件中,手动写了一个定时器,定时清理内存,加快项目运行速度。 pub...

项目比较大有时候会比较卡,虽然有gc自动清理机制,但是还是有不尽人意的地方。所以尝试在项目启动文件中,手动写了一个定时器,定时清理内存,加快项目运行速度。

public class program
  {
    [dllimport("psapi.dll")]
    static extern int emptyworkingset(intptr hwproc); //清理内存相关
   static void main()
    {
      //启动定时清理内存
      settimer();
    }
       /// <summary>
    /// 定时清理内存
    /// </summary>
    private static void settimer()
    {
      system.timers.timer atimer = new system.timers.timer(); //初始化定时器
      atimer.interval = 60000;//配置时间1分钟
      atimer.elapsed += new system.timers.elapsedeventhandler(ontimedevent);
      atimer.autoreset = true;//每到指定时间elapsed事件是到时间就触发
      atimer.enabled = true; //指示 timer 是否应引发 elapsed 事件。
    }
//定时器触发的处理事件
private static void ontimedevent(object source, elapsedeventargs e)
    {
      //清理内存
      gc.collect();
      gc.waitforpendingfinalizers();
      process[] processes = process.getprocesses();
      foreach (process process in processes)
      {
        //以下系统进程没有权限,所以跳过,防止出错影响效率。 
        if ((process.processname == "system") && (process.processname == "idle"))
          continue;
        try
        {
          emptyworkingset(process.handle);
        }
        catch
        {
        }
      }
    }
}

以上所述是小编给大家介绍的c#中的system.timers.timer定时器的使用和定时自动清理内存应用,希望对大家有所帮助