C# System.Threading.Timer 使用方法
public class TimerHelper
{
System.Threading.Timer timer;
public TaskSendMMS tasksendmms { get; set; }
public void Start()
{
timer = new System.Threading.Timer(new TimerCallback(tasksendmms.Execute), null, , );
tasksendmms.timer = timer;
}
}
public class TaskSendMMS
{ public Guid MMSId { get; set; } public Guid PhonePackageId { get; set; } public DateTime ExeTime { get; set; } private log log = new log(); public System.Threading.Timer timer; public TaskSendMMS()
{ }
public void Execute(object a)
{
try
{
log.writelog("=========================================开始执行计划========================================");
string Extime = ExeTime.ToString("MM-dd HH:mm");
string today = DateTime.Now.ToString("MM-dd HH:mm");
if (today.Equals(Extime))//如果时间是执行时间,则执
{
log.writelog("执行时间到了,时间为:" + today);
DataBase.DataClasses_MMSDataContext db = new DataBase.DataClasses_MMSDataContext();
var mms = db.MMS.Where(c => c.ID == this.MMSId).FirstOrDefault();
log.writelog("查询数据库MMS记录名称:" + mms.Title);
if (mms.State != ) //如果该彩信 不是延迟发送的,直接退出.
{
log.writelog("该彩信不是延迟发送的,直接退出");
if (null != timer)
{
log.writelog("该彩信不是延迟发送的,直接退出 并关闭timer");
timer.Dispose();
}
}
else
{
log.writelog("执行时间到了,开始调用Web接口立即发送彩信.");
//发送彩信
Business.Start(this.MMSId.ToString(), this.PhonePackageId.ToString(), "");
log.writelog("调用接口成功,完成发送彩信.");
mms.State = ;
db.SubmitChanges();
log.writelog("彩信状态,修改为1");
if (null != timer)
{
log.writelog("全部完成 并关闭timer");
timer.Dispose();
}
}
}
else
{
log.writelog("执行时间未到! 时间为: " + today);
}
}
catch (Exception ee)
{
log.writelog("出现异常信息:" + ee.Message);
}
log.writelog("=========================================结束执行计划========================================");
}
}
/// <summary>
/// 启动执行计划
/// </summary>
/// <param name="MmsId"></param>
/// <param name="packageIDs"></param>
/// <param name="datetime"></param>
/// <returns></returns>
public int StartSendMMs(string MmsId, string packageIDs, string datetime)
{
TimerHelper timer = new TimerHelper();
timer.tasksendmms = new TaskSendMMS() { ExeTime = DateTime.Parse(datetime), MMSId = new Guid(MmsId), PhonePackageId = new Guid(packageIDs) };
timer.Start();
return ;
}
C# System.Threading.Timer 使用方法的更多相关文章
- System.Threading.Timer 定时器的用法
System.Threading.Timer 是C# 中的一个定时器,可以定时(不断循环)执行一个任务.它是在线程上执行的,具有很好的安全性.为此 .Net Framework 提供了5个重载的构造 ...
- System.Threading.Timer使用心得
System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高. "只要在使用 Timer,就必须保留对它的引用."对于任何托 ...
- System.Threading.Timer的使用技巧
转自:http://www.360doc.com/content/11/0812/11/1039473_139824496.shtml# System.Threading.Timer timer = ...
- System.Threading.Timer如何正确地被Dispose
System.Threading.Timer是.NET中一个定时触发事件处理方法的类(本文后面简称Timer),它背后依靠的是.NET的线程池(ThreadPool),所以当Timer在短时间内触发了 ...
- System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的 区别和用法
System.Windows.Forms.Timer执行的时候,如果你在过程中间加一个sleep整个的界面就死掉了,但是另外两个没有这个情况,System.Timers.Timer.System.Th ...
- c# 多线程之-- System.Threading Timer的使用
作用:每隔多久去执行线程里的方法. class ThreadTimerDemo { static void Main(string[] args) { // Create an AutoResetEv ...
- 定时器:Timer:System.Threading.Timer类(转)
最近的一个项目有一些地方需要用到定时功能,在设计过程中,突然发现.net的Timer类居然还有很多我以前没有用过的功能,这里就跟大家分享一下 注:这里的Timer类特指System.Threading ...
- .NET中System.Diagnostics.Stopwatch、System.Timers.Timer、System.Threading.Timer 的区别
1.System.Diagnostics.Stopwatch Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间. 在典型的 Stopwatch 方案中,先调用 ...
- System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的差别和分别什么时候用
System.Windows.Forms.Timer.System.Timers.Timer.System.Threading.Timer的 区别和用法http://space.itpub.net/1 ...
随机推荐
- 第二章 git 工作区与reset,revert
1.Git工作区原理图 要清楚理解git reset的三个模式的区别,首先应该搞明白Git的各个工作区的划分. 工作区(working directory):在当前仓库中,新增,更改,删除文件这些动作 ...
- 解决Nginx不支持pathinfo的问题
server { listen 80; server_name www.zq27.cc zq27.cc; root /data/wwwroot/www.zq27.cc/; access_log off ...
- Nodejs 高并发长链接TCP链接的服务器设计问题
最近有个项目比较棘手,nodejs的tcp服务,目前的服务器支持3W左右的客户端连接,但是客户希望能够支持30W左右,原先的模型是让客户端请求一个地址分发服务器,然后再tcp链接到不同的地址上实现高并 ...
- 父窗口,子窗口之间的JS"通信"方法
今天需要在iframe内做一个弹窗,但使用弹窗组件的为子窗口,所以弹窗只在子窗口中显示掩膜层和定位,这样不符合需求. 后来晓勇哥指点,了解到一个以前一直没关注到的东西,每个窗口的全局变量,其实都存在对 ...
- 结构化查询语言(SQL)数据类型
简要描述一下结构化查询语言中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型. 字符型 VARCHARVS CHAR VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要.他们都是用 ...
- C# 模拟上传图片
上传图片的格式一定要按规定的写,不然没办法正确上传的. 我在上传的时候就是值前面没有空一行,导致上传不成功,很纠结的错误. 我要模拟的是一个FLASH的上传控件,我开始用HttpAnalyze抓包是抓 ...
- 如何解决pycharm输入中文报错问题
在pycharm中的python文件中输入中文会报错SyntaxError: 问题解决方法在文件开头添加 : # -*- coding:utf-8 -*- 每次添加都很麻烦,一劳永逸解决此问题的方法: ...
- Oracle数据导入导出
Oracle数据导入导出imp/exp 在oracle安装目录下有EXP.EXE与IMP.EXE这2个文件,他们分别被用来执行数据库的导入导出.所以Oracle数据导入导出imp/exp就相当与ora ...
- pip 国内源 gem 国内源
清华: https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣: http://pypi.douban.com/simple/ 阿里: http://mirrors.a ...
- How to copy remote computer files quickly to local computer
if we want copy file from VM(Remote VM) to local computer. Always can not easy copy file so easy. no ...