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

项目比较大有时候会比较卡,虽然有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
                {
                }
            }
        }

}
时间: 2024-08-06 13:08:04

C# System.Timers.Timer定时器的使用和定时自动清理内存应用的相关文章

例说多线程定时器System.Timers.Timer

System.Timers.Timer是多线程定时器,如果一个Timer没有处理完成,到达下一个时间点,新的Timer同样会被启动,所以在使用Timer时需要注意. 下面的实例显示了Timer的使用方法. using System; using System.Threading; using System.Windows; namespace TimerExp { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> publ

System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的差别和分别什么时候用

一.System.Windows.Forms.Timer 1.基于Windows消息循环,用事件方式触发,在界面线程执行:是使用得比较多的Timer,Timer Start之后定时(按设定的Interval)调用挂接在Tick事件上的EvnetHandler.在这种Timer的EventHandler中可 以直接获取和修改UI元素而不会出现问题--因为这种Timer实际上就是在UI线程自身上进行调用的. 2.它是一个基于Form的计时器3.创建之后,你可以使用Interval设置Tick之间的跨

使用System.Timers.Timer类实现程序定时执行

使用System.Timers.Timer类实现程序定时执行 在C#里关于定时器类有3个:System.Windows.Forms.Timer类.System.Threading.Timer类和System.Timers.Timer类. System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API  SetTimer实现的.它的主要缺点是计时不精确,而且必须有消息循环,Consol

[C#]System.Timers.Timer

摘要 在.Net中有几种定时器,最喜欢用的是System.Timers命名空间下的定时器,使用起来比较简单,作为定时任务,有Quartz.net,但有时候,一个非常简单的任务,不想引入这个定时任务框架,用Timer完全可以满足要求. 一个例子 每一秒在控制台上打印时间. class Program { static void Main(string[] args) { var timer = new System.Timers.Timer(); timer.Elapsed += timer_El

System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer

System.Windows.Forms.Timer.System.Timers.Timer.System.Threading.Timer的 区别和用法System.Windows.Forms.Timer执行的时候,如果你在过程中间加一个sleep整个的界面就死掉了,但是另外两个没有这个情况,System.Timers.Timer.System.Threading.Timer!System.Timers.Timer.System.Threading.Timer这两个平时用的时候没有发现太大的区别

System.Timers.Timer用法

System.Timers.Timer t = new System.Timers.Timer(5000); //设置时间间隔为5秒 private void Form1_Load(object sender, EventArgs e)        {            t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_TimesUp);            t.AutoReset = false; //每到指定时间Elap

C# 通过System.Timers.Timer获取时间

1 public delegate void timeDelegate();// Timer获取时间 2 3 private void Form1_Load(object sender, EventArgs e) 4 { 5 System.Timers.Timer t = new System.Timers.Timer(1000); //设置时间间隔为5秒 6 t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_TimesUp); 7

C# --System.Timers.Timer 定时方法

注意Start() 注意要等Interval 时间间隔 static void Main(string[] args) { System.Timers.Timer t = new System.Timers.Timer();//实例化Timer类,设置时间间隔 t.Interval = 0.5 * 60 * 1000; t.Elapsed += new System.Timers.ElapsedEventHandler(RunConvert);//到达时间的时候执行事件 t.AutoReset

.NET System.Timers.Timer的原理和使用(开发定时执行程序)

概述(来自MSDN) Timer 组件是基于服务器的计时器,它使您能够指定在应用程序中引发Elapsed 事件的周期性间隔.然后可以操控此事件以提供定期处理.例如,假设您有一台关键性服务器,必须每周7 天.每天24 小时都保持运行.可以创建一个使用Timer 的服务,以定期检查服务器并确保系统开启并在运行.如果系统不响应,则该服务可以尝试重新启动服务器或通知管理员. 基于服务器的Timer 是为在多线程环境中用于辅助线程而设计的.服务器计时器可以在线程间移动来处理引发的Elapsed 事件,这样