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 ...
随机推荐
- ThinkPHP 3.2.3 文件上传时间目录问题
上传文件的代码如下 在上传文件的时候会默认生成时间目录, 但是有些时候,并不想生成时间目录,而是储存在我们自己定义的目录下,可以这样做: 只需要添加 $upload->autoSub = fal ...
- C# 用POST提交json数据
public void GetResponse(string url, string json) { Encoding encoding = Encoding.UTF8; byte[] data = ...
- PHP的文件格式应该以UTF-8无BOM编码
前一段时间写PHP,经常在解析文件之前就要对数据进行处理判断,并以header()的方式进行页面跳转.然而后来将文件放到 linux 服务器时常碰到header()解析出错的情况,而在 windows ...
- Python切片
切片是啥, 可以吃么 切片肿么用哈 辣么长,记不住 切片是啥, 可以吃么 嘛,所谓切片故名思意就有选取的意思啦, 跟java里面的subString()意思差不多, 从原始的字符串中按规则提取出新的字 ...
- Python list列表的排序
当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下python对于列表list排序的常用方法: 第一种:内建函数sort() 这个应该是我们使用最多的也是最简单的排序函 ...
- 证书过期-->app审核提示90034证书错误
1.证书过期问题,去钥匙串中删除过期证书,然后新下载一个证书,重新添加,注:一定要把所有过期证书全部删除,如果不显示则点击钥匙串-->显示过期证书 然后下载新证书:https://develop ...
- R语言读取excel文件的3种方法
R读取excel文件中数据的方法: 电脑有一个excel文件,原始的文件路径是:E:\R workshop\mydata\biom excel数据为5乘2阶矩阵,元素为 ...
- 1282 - Leading and Trailing ---LightOj1282(快速幂 + 数学)
http://lightoj.com/volume_showproblem.php?problem=1282 题目大意: 求n的k次方的前三位和后三位数然后输出 后三位是用快速幂做的,我刚开始还是不会 ...
- Qt ffmpeg环境搭建
ffmpeg下载地址:https://ffmpeg.zeranoe.com/builds/ 版本选择第一个,然后多少位看自己的pc(我的是64),右边对应三个都要下载,Static,Shared,De ...
- js中创建数组的方法
1.声明或创建一个不指定长度的数组(Array)的方式为: 如:var arrayObj = new Array(); 2.声明或创建一个数组并指定长度的数组(Array)的方式为: 如:var ar ...