详解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 { } } } }
以上所述是小编给大家介绍的C#中的System.Timers.Timer定时器的使用和定时自动清理内存应用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
linux使用select实现精确定时器详解
在编写程序时,我们经常会用到定时器.首先看看select函数原型如下: 复制代码 代码如下: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 参数说明:slect的第一个参数nfds为fdset集合中最大描述符值加1,fdset是一个位数组,其大小限制为__FD_SETSIZE(1024),位数组的每一位代表其
-
Android使用CountDownTimer实现倒数定时器效果
实现倒计时的效果 例子:发送验证码按钮 效果图: /** * 倒计时 * * @author admin * */ public class MainActivity extends ActionBarActivity { private Button tvTime;// 显示时间 private MyCountDownTimer myCountDownTimer;// 倒计时对象 @Override protected void onCreate(Bundle savedInstanceSta
-
Cocos2d-x Schedule定时器的使用实例
schedule可以实现定时器的功能,就是每隔一段时间做什么事情,schedule的调用者是节点,所有的节点都可以调用schedule函数,参数需要传入一个函数(schedule_selector一个新的选择器),在函数中可以完成碰撞检测等功能.下面就具体来看看这个函数的用法吧. bool HelloWorld::init() { bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //schedule传入一个参数的时候每一帧都会调用s
-
Swift3.0 GCD定时器的使用DEMO
直接看主要代码 //截止日期 let endDate = datePicker.date //开始日期 let startDate = Date() //时间间隔 let timeInterval:TimeInterval = endDate.timeIntervalSince(startDate) if timer == nil { //剩余时间 var timeout = timeInterval if timeout != 0 { //创建全局队列 let queue = Dispatch
-
详解C#中的System.Timers.Timer定时器的使用和定时自动清理内存应用
项目比较大有时候会比较卡,虽然有GC自动清理机制,但是还是有不尽人意的地方.所以尝试在项目启动文件中,手动写了一个定时器,定时清理内存,加快项目运行速度. public class Program { [DllImport("psapi.dll")] static extern int EmptyWorkingSet(IntPtr hwProc); //清理内存相关 static void Main() { //启动定时清理内存 SetTimer(); } /// <summar
-
详解C#中的定时器Timer类及其垃圾回收机制
关于C# Timer类 在C#里关于定时器类就有3个 C# Timer使用的方法1.定义在System.Windows.Forms里 C# Timer使用的方法2.定义在System.Threading.Timer类里 " C# Timer使用的方法3.定义在System.Timers.Timer类里 下面我们来具体看看这3种C# Timer用法的解释: (1)System.Windows.Forms.Timer 应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或D
-
asp.net中System.Timers.Timer的使用方法
我们经常会在网站中加一些定时执行的任务,比如生成静态页.执行邮件发送等. 可以通过在Global.asax中这样设置来实现. 复制代码 代码如下: void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 System.Timers.Timer MT = new System.Timers.Timer(); MT.Enabled = true; MT.Interv
-
详解Java中的防抖和节流
目录 概念 防抖(debounce) 节流(throttle) 区别 Java实现 防抖(debounce) 防抖测试1 防抖测试2 防抖测试简易版 节流(throttle) 节流测试1 彩蛋 解决方法1 解决方法2 概念 防抖(debounce) 当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时. 防抖,即如果短时间内大量触发同一事件,都会重置计时器,等到事件不触发了,再等待规定的事件,才会执行函数.而这整个过程就触发了
-
详解Java中多线程异常捕获Runnable的实现
详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口的LayerInitTask类,ThreadException类,线程安全的Vector 3.思路: 向LayerInitTask中传入Vector,记录异常情况,外部遍历,判断,抛出异常. 4.代码: package step5.exception; import java.util.Vector
-
详解Struts2中对未登录jsp页面实现拦截功能
Struts2中拦截器大家都很经常使用,但是拦截器只能拦截action不能拦截jsp页面.这个时候就有点尴尬了,按道理来说没登录的用户只能看login界面不能够通过输入URL进行界面跳转,这显然是不合理的.这里介绍Struts2中Filter实现jsp页面拦截的功能.(有兴趣的人可以去研究Filter过滤器的其它用法,因为利用过滤器也可以实现action拦截的功能) 下面直接上代码,边看边分析实现步骤和原理. 1.web.xml中的配置信息: <filter> <filter-name&
-
详解JDK中ExecutorService与Callable和Future对线程的支持
详解JDK中ExecutorService与Callable和Future对线程的支持 1.代码背景: 假如有Thread1.Thread2.Thread3.Thread4四条线程分别统计C.D.E.F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现? 2.代码: 统计"盘子"大小的代码,此处实现jdk中的Callable接口, package com.wang.test.concurrent; import java.util.concurrent.Cal
-
详解Java 中的嵌套类与内部类
详解Java 中的嵌套类与内部类 在Java中,可以在一个类内部定义另一个类,这种类称为嵌套类(nested class).嵌套类有两种类型:静态嵌套类和非静态嵌套类.静态嵌套类较少使用,非静态嵌套类使用较多,也就是常说的内部类.其中内部类又分为三种类型: 1.在外部类中直接定义的内部类. 2.在函数中定义的内部类. 3.匿名内部类. 对于这几种类型的访问规则, 示例程序如下: package lxg; //定义外部类 public class OuterClass { //外部类静态成员变量
-
详解Java中Collections.sort排序
Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的. compare(a,b)方法:根据第一个参数小于.等于或大于第二个参数分别返回负整数.零或正整数. equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true. Collections.
-
详解java中this.getClass()和super.getClass()的实例
详解java中this.getClass()和super.getClass()的实例 前言: 遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗. getClass()是java中Object类的一个方法,其原型为: public final Class<?> getClass() 返回值为 当前运行时类的Class对象. 所以写了一段代码来说明: getClass()不受this和super影响,而是有当前的运行类决定的. 代码如下: 父类
随机推荐
- AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
- Oracle SQL tuning 数据库优化步骤分享(图文教程)
- java学习笔记_关于字符串概述
- js setTimeout实现延迟关闭弹出层
- ThinkPHP框架里隐藏index.php
- php实现递归与无限分类的方法
- CentOS 7安装Docker服务详细过程
- ThinkPHP中I(),U(),$this->post()等函数用法
- linux自动清理日志脚本分享
- Java将文件分割为多个子文件再将子文件合并成原始文件的示例
- JS定时器用法分析【时钟与菜单中的应用】
- Ruby里4种比较函数(equal?, eql?, ==, ===)详解
- Python 实现随机数详解及实例代码
- Android 列表形式的切换的示例代码
- 微信小程序本地缓存数据增删改查实例详解
- ref 和out传参的区别分析
- 风雨历练十四年 互联网引领信息化
- 六招,教你QQ群不是就这么用di
- 2018年Python值得关注的开源库、工具和开发者(总结篇)
- vue.js vue-router如何实现无效路由(404)的友好提示