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

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

最近在做一个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. Wikipedia : OIT history

    http://en.wikipedia.org/wiki/Order-independent_transparency Order-independent transparency From Wiki ...

  2. twitter storm源码走读之3--topology提交过程分析

    概要 storm cluster可以想像成为一个工厂,nimbus主要负责从外部接收订单和任务分配.除了从外部接单,nimbus还要将这些外部订单转换成为内部工作分配,这个时候nimbus充当了调度室 ...

  3. OpenFlow.p4 源码

    /* Copyright 2013-present Barefoot Networks, Inc. Licensed under the Apache License, Version 2.0 (th ...

  4. MySQL 创建用户 与 授权

    例,需要给 121.52.215.100 连接添加一个用户 dee,密码是 123456,他只能对数据库 vshop 有 select 权限: CREATE USER '; GRANT SELECT ...

  5. java web基础2HTTP协议知识点总结

    一.HTTP协议基础 1.定义:HTTP是基于TCP连接的浏览器与服务器通信协议.(即传输层先用TCP三次握手建立连接,进而HTTP通信) 2.连接原理:先进行TCP建立端到端连接,然后发送和接受HT ...

  6. P1003 铺地毯

    水题 #include <bits/stdc++.h> using namespace std; const int maxn = 10005; int n; int x, y, i; s ...

  7. kudu

    Kudu White Paper http://www.cloudera.com/documentation/betas/kudu/0-5-0/topics/kudu_resources.html h ...

  8. Apache Kafka源码分析 - PartitionStateMachine

    startup 在onControllerFailover中被调用, initializePartitionState private def initializePartitionState() { ...

  9. 迷宫bfs POJ3984

    #include<stdio.h> int map[5][5]={0,1,0,0,0,       0,1,0,1,0,       0,0,0,0,0,       0,1,1,1,0, ...

  10. android Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.

    在当前工程目录中 gradle.properties 添加org.gradle.jvmargs=-XX\:MaxHeapSize\=256m -Xmx256m http://stackoverflow ...