最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的学习是避免被淘汰的不二法宝。

当然,题外话说多了,咱进入正题!

最近在做一个WPF项目,我做的模块主要是负责查询。其中一个模块叫做CALLBACKLIST,中文译为联系记录,既然叫联系记录,就少不了打电话,而打电话是手机端的事情。手机端的开发就交给IOS和安卓开发人员,当然,他们所需的服务肯定由我写啦!这个模块的主要业务逻辑是这样的,如下:

管理员查询联系记录->选择用户并将用户信息插入到临时表S->手机端(IOS,安卓)定时抓取临时表S中的数据(主要是顾客姓名,手机号)->手机端拨打用户电话->手机端将拨打的结果以JSON格式反馈给服务端->服务端处理反馈的数据->服务端定时刷新并显示联系结果。

根据以上需求,服务端需要写查询Search功能、插入临时表Add To S功能、为手机端提供一个抓取临时数据的服务GetList功能、获取手机端反馈结果并处理SetCallBackList功能、及WPF页面定时刷新。

至于以上的需求及处理方式本博客只讲解定时器的开发,如下:

首先,微软为WPF定制了一个专门的定时器DispatcherTimer,这句话很重要,省的瞎用!

   其次,我们需要引入命名空间->using System.Windows.Threading;

创建定时器对象->DispatcherTimer dispatcherTimer = new DispatcherTimer();

最后设置定时器:

            //定时查询-定时器
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(, , );
dispatcherTimer.Start();

在上述代码中,我们EventHandler这个东东叫做定时器回调函数,根据上述的需求,我们要定时刷新联系记录结果,说白了就是定时查询,也就是再执行一次查询方法而已。

dispatcherTimer.Interval = new TimeSpan(0, 0, 60);->设置定时器的时间间隔。
最后启动定时器->dispatcherTimer.Start();
然后写回调函数如下:
/// <summary>
/// 定时器回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
           DoSearch();//执行查询
         }

至此:WPF定时器就完成了!

2016-10-25  补充说明:定时器Start()以后,也就是启动以后,要记得及时关上!否则会一直执行下去的!

 @陈卧龙的博客

C# WPF定时器的更多相关文章

  1. WPF 定时器DispatcherTimer+GetCursorPos 的使用,动态查看屏幕上任一点坐标

    原文:WPF 定时器DispatcherTimer+GetCursorPos 的使用,动态查看屏幕上任一点坐标 );                           dTimer.Start(); ...

  2. 调用线程无法访问此对象,因为另一个线程拥有该对象 [c# wpf定时器程序报的错误]

    WPF:Dispatcher.Invoke 方法,只有在其上创建 Dispatcher 的线程才可以直接访问DispatcherObject.若要从不同于在其上创建 DispatcherObject ...

  3. c# wpf定时器的一种用法

    1.xaml页面 <Window x:Class="EssentialWPF.MainWindow" xmlns="http://schemas.microsoft ...

  4. wpf 定时器应用,在界面动态刷新时间

    DispatcherTimer = new DispatcherTimer(); Timer.Tick += Timer_Tick; Timer.Interval = TimeSpan.FromSec ...

  5. C# WPF 用MediaElement控件实现视频循环播放

    在WPF里用MediaElement控件,实现一个循环播放单一视频的程序,同时可以控制视频的播放.暂停.停止. 一种方式,使用MediaElement.MediaEnded事件,在视频播放结束后,自动 ...

  6. 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步

    深入理解MVC   MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...

  7. WPF 使用定时器

    WPF 使用定时器:<ProgressBar Height="10" HorizontalAlignment="Left" Margin="28 ...

  8. WPF中定时器与进度条的配合使用

    WPF中定时器使用的注意事项: WPF需要使用System.Windows.Threading.DispatcherTimer定时器,而不能使用System.Timers.Timer定时器.因为Sys ...

  9. WPF中定时器Timer与DispatcherTimer的用法

    最近的工作项目中需要定时更新UI控件中的数据,这时候第一反应肯定会想到去使用System.Timers.Timer定时更新UI控件,但是程序运行后,会发现程序崩溃了.报的异常为“调用线程无法访问此对象 ...

随机推荐

  1. 代理和block反向传值

    代理传值: // SendViewController.h #import <UIKit/UIKit.h> @protocol SendInFor <NSObject> -(v ...

  2. 总结一下这几天学习django的心得

    总结一下这几天学习django的心得 http://www.tuicool.com/articles/jMVB3e 时间 2014-01-12 11:40:11  CSDN博客 原文  http:// ...

  3. php调用empty出现错误Can't use function return value in write context

    php调用empty出现错误Can't use function return value in write context 2012-10-28 09:33:22 | 11391次阅读 | 评论:0 ...

  4. 浅析php学习的路线图

    一直都想走上码农的道路,奈何当年没有学好.一直与码农无缘.现在又想做一些码农就下了一套某个培训机构的php视频来看.希望能走上码农的道路     1.php初级教程 初级教程主要的页面设置的,就是 h ...

  5. JLINK SWD下载模式引脚

    SWD接4个脚就可以  RESET可以不用接

  6. 基于s5pv210的uboot总结

    1.启动过程特征总结 (1)第一阶段为汇编阶段.第二阶段为C阶段 (2)第一阶段在SRAM中.第二阶段在DRAM中 (3)第一阶段注重SoC内部.第二阶段注重SoC外部Board内部 2.uboot的 ...

  7. JdbcTemplae使用入门&&Spring三种连接池配置&&Spring配置文件引用外部properties文件

    JdbcTemplate的使用 Spring为了各种支持的持久化技术,都提供了简单操作的模版和回调. JdbcTemplate 简化 JDBC 操作HibernateTemplate 简化 Hiber ...

  8. php经典笔试题

    五.基础及程序题(建议使用你擅长的语言:C/C++.PHP.Java) 5.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组.(提示:不能使用系统已有函数,另外请仔细回忆以前学 ...

  9. 用正则验证字符串格式,形如:A)XXX B)XXXX C)XXX

    今天遇到个小功能,要验证某个英文选项是否正确,例如:A)accumulate B)circling C)communities  D)competition  E)domestic F)financi ...

  10. BLE-NRF51822教程16-BLE地址

    本教程基于 sdk9+sd8.0 51822的 BLE的设备地址 可以通过如下函数函数来获得 地址的设置可以调用如下函数设置. 官方的demo工程中,都是没有主动调用过 sd_ble_gap_addr ...