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 使用方法的更多相关文章

  1. System.Threading.Timer 定时器的用法

    System.Threading.Timer 是C# 中的一个定时器,可以定时(不断循环)执行一个任务.它是在线程上执行的,具有很好的安全性.为此  .Net Framework 提供了5个重载的构造 ...

  2. System.Threading.Timer使用心得

    System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高. "只要在使用 Timer,就必须保留对它的引用."对于任何托 ...

  3. System.Threading.Timer的使用技巧

    转自:http://www.360doc.com/content/11/0812/11/1039473_139824496.shtml# System.Threading.Timer timer = ...

  4. System.Threading.Timer如何正确地被Dispose

    System.Threading.Timer是.NET中一个定时触发事件处理方法的类(本文后面简称Timer),它背后依靠的是.NET的线程池(ThreadPool),所以当Timer在短时间内触发了 ...

  5. System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的 区别和用法

    System.Windows.Forms.Timer执行的时候,如果你在过程中间加一个sleep整个的界面就死掉了,但是另外两个没有这个情况,System.Timers.Timer.System.Th ...

  6. c# 多线程之-- System.Threading Timer的使用

    作用:每隔多久去执行线程里的方法. class ThreadTimerDemo { static void Main(string[] args) { // Create an AutoResetEv ...

  7. 定时器:Timer:System.Threading.Timer类(转)

    最近的一个项目有一些地方需要用到定时功能,在设计过程中,突然发现.net的Timer类居然还有很多我以前没有用过的功能,这里就跟大家分享一下 注:这里的Timer类特指System.Threading ...

  8. .NET中System.Diagnostics.Stopwatch、System.Timers.Timer、System.Threading.Timer 的区别

    1.System.Diagnostics.Stopwatch Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间. 在典型的 Stopwatch 方案中,先调用 ...

  9. 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 ...

随机推荐

  1. ThinkPHP 3.2.3 文件上传时间目录问题

    上传文件的代码如下 在上传文件的时候会默认生成时间目录, 但是有些时候,并不想生成时间目录,而是储存在我们自己定义的目录下,可以这样做: 只需要添加 $upload->autoSub = fal ...

  2. C# 用POST提交json数据

    public void GetResponse(string url, string json) { Encoding encoding = Encoding.UTF8; byte[] data = ...

  3. PHP的文件格式应该以UTF-8无BOM编码

    前一段时间写PHP,经常在解析文件之前就要对数据进行处理判断,并以header()的方式进行页面跳转.然而后来将文件放到 linux 服务器时常碰到header()解析出错的情况,而在 windows ...

  4. Python切片

    切片是啥, 可以吃么 切片肿么用哈 辣么长,记不住 切片是啥, 可以吃么 嘛,所谓切片故名思意就有选取的意思啦, 跟java里面的subString()意思差不多, 从原始的字符串中按规则提取出新的字 ...

  5. Python list列表的排序

    当我们从数据库中获取一写数据后,一般对于列表的排序是经常会遇到的问题,今天总结一下python对于列表list排序的常用方法: 第一种:内建函数sort() 这个应该是我们使用最多的也是最简单的排序函 ...

  6. 证书过期-->app审核提示90034证书错误

    1.证书过期问题,去钥匙串中删除过期证书,然后新下载一个证书,重新添加,注:一定要把所有过期证书全部删除,如果不显示则点击钥匙串-->显示过期证书 然后下载新证书:https://develop ...

  7. R语言读取excel文件的3种方法

    R读取excel文件中数据的方法: 电脑有一个excel文件,原始的文件路径是:E:\R workshop\mydata\biom excel数据为5乘2阶矩阵,元素为                ...

  8. 1282 - Leading and Trailing ---LightOj1282(快速幂 + 数学)

    http://lightoj.com/volume_showproblem.php?problem=1282 题目大意: 求n的k次方的前三位和后三位数然后输出 后三位是用快速幂做的,我刚开始还是不会 ...

  9. Qt ffmpeg环境搭建

    ffmpeg下载地址:https://ffmpeg.zeranoe.com/builds/ 版本选择第一个,然后多少位看自己的pc(我的是64),右边对应三个都要下载,Static,Shared,De ...

  10. js中创建数组的方法

    1.声明或创建一个不指定长度的数组(Array)的方式为: 如:var arrayObj = new Array(); 2.声明或创建一个数组并指定长度的数组(Array)的方式为: 如:var ar ...