最近在写一个缓存项目中,使用定期刷新缓存机制,我想在项目后台创建一个定时器,来实现定期的刷新缓存,当我准备写时,开始考虑用线程去实现,毕竟线程有个Sleep功能,我让线程一直开启,然后睡眠来暂停刷新,前台UI当然可以实现,但是最后想想感觉线程一直在运行,会不会给内存负载变大,于是我就该用Timer,而且使用起来比较简单,但是在写到Timer时我犹豫了一下,是Timer好还是DispatcherTimer好呢?我开始不是很清楚,后来网上搜搜看到了:

DispatcherTimer属于UI线程,Timer非UI线程,运行在后台,如果要调用的话要使用Dispatcher.BeginInvoke()方法;

正是由于DispatcherTimer的运行在UI线程上的,所以问题就出来了,在DispatcherTimer里面执行等待动作或者时间过长,

可能会导致UI假死,所以我就用Timer了最后,但是发现使用 TimerCallback 委托指定希望 Timer 执行的方法。 计时器委托在构造计时器时指定,并且不能更改。 此方法不在创建计时器的线程上执行,而是在系统提供的 ThreadPool 线程上执行。这样一来内存开销会不会有变大了呢??(希望知道的讲解下) 下面是简单的两个类的在WP7.1下使用方法:

 1   public partial class MainPage : PhoneApplicationPage
 2     {
 3         DispatcherTimer timer = null;
 4         Timer timer2 = null;
 5
 6         // 构造函数
 7         public MainPage()
 8         {
 9             InitializeComponent();
10
11             timer = new DispatcherTimer();
12             timer.Interval = TimeSpan.FromSeconds(3);
13             timer.Tick+=new EventHandler(timer_Tick);
14             timer.Start();
15
16
17             timer2= new Timer(CallBalk,text,3000,1000);
18         }
19
20         void CallBalk(object  state)
21         {
22             //Dispatcher.BeginInvoke();
23             Debug.WriteLine("Timer");
24         }
25         void timer_Tick(object sender,EventArgs e)
26         {
27             Debug.WriteLine(DateTime.Now.ToShortTimeString());
28             Debug.WriteLine("DispatcherTimer");
29         }
30     }

另外:Timer方法可以通过使用 Change 方法更改这些值或禁用计时器。

以上是本人的一个学习过程,希望大家拍砖!!

转载于:https://www.cnblogs.com/Yukang1989/archive/2012/08/30/2663499.html

Wp7下的Timer DispatcherTimer使用相关推荐

  1. 在WP7下自定义RelativeSource 的Binding

    最近老没有时间上来写博文.今天有空来写写上次还没有说完的话题.上一篇提到说说我在WP7应用开发中遇到的 子控件 DataTemplete 中的按钮的命令绑定,刚开始接触似乎是个头疼的问题.那怎么解决呢 ...

  2. Windows Service下的Timer计时器的使用

    在C#中提供了三种类型的计时器: 1.基于 Windows 的标准计时器(System.Windows.Forms.Timer) 2.基于服务器的计时器(System.Timers.Timer) 3. ...

  3. WP7下巧用MediaElement在雪藏中

    我们在很多应用中,都用到MediaElement这个控件,用来播放音乐视频,如果外部播放器在播放音乐,当进入有MediaElement控件的应用中时,播放的音乐会停止,这主要是外部播放器和MediaE ...

  4. WP7基础---补充

    可能用到的资源:(注意性能的测试) (注:在WP7下,对于页面跳转的特效,只有自己实验一下,才觉得不错!很零散!现在只知道简单的使用,对于性能没有概念! 还有对于Canvas容器的图片层叠效果,还有圆 ...

  5. 63、使用Timer类来实现定时任务

    定时任务 定时任务就是让计算机自动的每隔一段时间执行的代码. 比如要实现这样的一个功能: 让计算机每隔5秒钟,在控制台打印一个www.monkey1024.com 可以使用java.util包下的Ti ...

  6. System.Threading.Timer类的TimerCallback 委托

    System.Threading.Timer类的TimerCallback 委托 Written by: Rickie Lee Nov. 19, 2004 System.Threading.Timer ...

  7. ngx_lua_API 指令详解(一)ngx.timer.at 指令

    语法: ok,err = ngx.timer.at(delay,callback,user_arg1,user_arg2 ...) 上下文: init_worker_by_lua *,set_by_l ...

  8. 使用timer定时器,防止事件重入

    首先简单介绍一下timer,这里所说的timer是指的System.Timers.timer,顾名思义,就是可以在指定的间隔是引发事件.官方介绍在这里,摘抄如下: 1 2 Timer 组件是基于服务器 ...

  9. Java并发编程—定时器Timer底层原理

    原文作者:妮蔻 原文地址:Java并发编程笔记之Timer源码分析 目录 一.timer问题复现 二.Timer 实现原理分析 timer在JDK里面,是很早的一个API了.具有延时的,并具有周期性的 ...

最新文章

  1. 2016全球教育机器人发展白皮书
  2. SSM + AJAX + JSON 动态下拉框
  3. C和指针之字符串编程练习10(判断字符串是否是回文数)
  4. [Hands On ML] 4. 训练模型
  5. vue可以直接进行运算么_Vue实现手机计算器
  6. html文本框连接数据库失败,从按钮点击将数据从MySQL数据库加载到HTML文本框
  7. Java报错 -- The public type c must be defined in its own file
  8. Webrtc半小时搭建视频通话 视频会议
  9. 计算机科学导论_学长说专业 | 计算机科学与技术
  10. Jsp Layout 布局页
  11. 项目中的门禁管理者贾维斯———关于 Shiro 框架的 基本使用和基础配置,以及工作流程的生动解释
  12. Windows查看快捷键占用情况
  13. 数据结构手把手教学——单向循环链表
  14. problems encountered during text search
  15. 一个手机号码可以申请二个微信号吗?如何申请?
  16. 爱奇艺本地实时Cache方案
  17. java操作excel方法_Java实现操作excel表格的方法
  18. MFC中VC6.0工程项目中文乱码的显示处理
  19. MySQL第十次作业
  20. 列存储相关概念和常见列式存储数据库(Hbase、德鲁依)

热门文章

  1. python库--tensorflow--RNN(循环神经网络相关)
  2. BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流
  3. 1040. Longest Symmetric String (25)
  4. 关于tcp和http
  5. ASPNET登陆总结
  6. [转] Transact_SQL手册
  7. java 排队任务_android实现排队任务
  8. Infiniband网络抓包
  9. RedHat7/CentOS7 压缩解压命令汇总
  10. DPDK rte_mbuf