学习了quartz.net2.0的心得
由于项目中要运用到此调度方法,所以抽空学习了下,简单的用法可以掌握了
首先作为没有用过的人来说,怎么用呢?
于是百度了下原来先要下载
quartz.net2.0,
然后我就去下了个quartz.net2.0
,接着便是要把Quartz.dll还有Common.Logging.dll引用了
,最后就是把config配置了,这个简单:
直接贴代码
<configSections>
<section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<quartz>
<add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" />
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.threadPool.threadPriority" value="2" />
<add key="quartz.jobStore.misfireThreshold" value="60000" />
<add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
</quartz>
这些准备工作做好了,就到主菜了
public void Send_Saveinfo()
{
//获取架构接口信息
IScheduler scheduler = factory.GetScheduler();
///开启Quartz.net的架构
scheduler.Start();
//找到WriteLogJob这个作业
IJobDetail job = JobBuilder.Create<WriteLogJob>().WithIdentity("SampleJob", "JobGroup1").Build();
//什么时间执行该作业
//ITrigger trigger = TriggerBuilder.Create().StartNow().Build();
///每日0点的时候执行此方法
ITrigger trigger = new CronTriggerImpl("CronTrigger", "TriggerGroup1", "0 0 0 * * ?");
scheduler.ScheduleJob(job, trigger);
}
///每日0点的时候执行此方法
ITrigger trigger = new CronTriggerImpl("CronTrigger", "TriggerGroup1", "0 0 0 * * ?");
scheduler.ScheduleJob(job, trigger);
这里是你的winform或者wpf要用的方法
最后注意的是当你退出这个页面的时候要加的方法
//当要关闭程序的时候要停止这个服务
IScheduler scheduler = factory.GetScheduler();
if (scheduler != null)
{
scheduler.Shutdown(true);
}
如果不加这个的话,再次打开的话就会报错了,除非在进程里面把这个服务停止了
当然这里只是执行页面,由上面我们要建一个WriteLogJob这个作业,其对应的名称当然也是WriteLogJob
但是要对应其接口:IJob
如下:
public class WriteLogJob : IJob
{
private readonly EcoCementDataBasic.Data.OrderInformationData tempOrderData = new OrderInformationData();
public void Execute(IJobExecutionContext context)
{
//获取当前文件路径
// string fileLogPath = AppDomain.CurrentDomain.BaseDirectory;
//保存当前路径下订单信息excel
List<EcoCementDataBasic.Data.OrderModel> tempOrderInformation = tempOrderData.ExcelModel();
StreamWriter sw = null;
SaveFileDialog sfd = new SaveFileDialog();
//指定路径
string path = SaveConfig.GetConfigValue("ReportFilepath")+"//";
sfd.FileName = "订单信息" + DateTime.Now.ToString("yyyyMMdd") + ".xls";
try
{
sw = new StreamWriter(path+sfd.FileName.ToString(), false, Encoding.Unicode);
string sb = GetGridDetailTableHtml(tempOrderInformation, 9, "订单信息", DateTime.Now.ToShortDateString());
sw.Write(sb);
sw.Flush();
Program.Get_ILog().Log(string.Format("成功导出报表信息至服务器"));
}
catch (IOException ioe)
{
throw ioe;
}
finally
{
if (sw != null)
{
sw.Close();
}
}
//获取路径文件
string file = path + sfd.FileName;
//获取发送邮件的配置信息
LoadConfig();
SendEmail sendMail = new SendEmail();
sendMail.SendMail(ToEmail, FromEmail, "这是当前订单实时余量信息", "订单信息"+DateTime.Now.ToString("yyyy-MM-dd"), FromPwd);
sendMail.Attachments(""+file+ "");
sendMail.SendAsync(SendCompletedCallback, FromSMTPServer, FromSMTPPort);
//sendMail.Send(FromSMTPServer, FromSMTPPort);
//删除1周前的数据
sfd.FileName = "订单信息" + DateTime.Now.AddDays(-7).ToString("yyyyMMdd") + ".xls";
if (File.Exists(@"" + sfd.FileName + ""))
{
//如果存在则删除
File.Delete(@"" + sfd.FileName + "");
}
}
注意这里是建的另一个类
看着还简单撒:
学习了quartz.net2.0的心得的更多相关文章
- asp.net2.0安全性(1)--用户角色篇(起篇)--转载来自车老师
安全管理的解决方案在.net1.1中几乎为一片空白,对于应用程序的验证与授权大部分的工作是开发人员自己编写代码,或者是借助企业库等工具来实现,此可谓.net1.1中的一大缺憾.在.net2.0中微软为 ...
- quartz 2.0 与1.0功能对比
日常开发来说,相对于1.0版,2.0版在使用上有以下几点需要注意的变化 变化一 比1.0多引用了C5.dll C5.dll 一个C#和其他CLI语言的泛型集合类..Net2.0及以上才可以使用.简介地 ...
- .NET3.5项目转.NET2.0项目技巧
最近有一个项目,一开始开发是用VS2008(.NET3.5)开发的,该项目是一个Windorm客户端软件,由于在大规模的推广过程中,发现在安装.NET3.5Framework的时候浪费了太多时间,而且 ...
- net2.0对于递归变量的处理方式不同引发的递归问题
同样的代码,用NET2.0执行产生的效果与其它框架使用的不同,导致报错. 认真查找原因后发现该程序的编写人员隐式的使用了一个公共变量,使之在递归过程中不断的被改写,使得1次递归后就破坏了原来的循环体, ...
- sp.net2.0中的新增控件BulletedList的一些高级用法
asp.net2.0新增了一个BulletedList控件,通过它可以以列表形式显示数据,而不必再用Repeater,Datalist等实现相同的效果.今天做程序的时候正好用到了这个控件,就把它的一些 ...
- 【IHttpHandler】在ASP.Net2.0中使用UrlRewritingNet实现链接重写
很多时候我们需要链接转向(Url Rewriting),例如二级域名转向.文章访问链接等场合. 让我们看两个例子: 1 你现在看到的当前作者的博客园的域名: http://jx270.cnblogs. ...
- 在.NET2.0中解析Json和Xml
在.NET解析json有很多方法,这里介绍最简单也用的最多的一种. 一.添加引用 解析Json,先下载开源控件 Newtonsoft.Json.dll 下载地址:http://files.cnblog ...
- (转载) .NET2.0程序集无法在.net 4.0 中运行的解决方案
首先在MSDN上看到 4.0 的更新日志中有如下这条: .NET Framework 4 不能自动使用自己的公共语言运行时版本来运行由 .NET Framework 早期版本生成的应用程序. 若要使用 ...
- IIS启用.net2.0
如果先安装.net2.0,后安装iis,则在IIS服务扩展中无法看到.net2.0,按如下方法可启用: C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/as ...
随机推荐
- IBatis按条件分页查询
XML中代码 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC & ...
- c语言完成宽带拨号
学校的网络每次开机都需要手动登陆,于是用c写了一个自动登陆的小程序... 程序功能超级简单...只是懒得每次都登陆... PS:代码功能具体没有测试...我自己用的是python #include & ...
- Javascript初学篇章_3(注释/if/switch)
五.javascript的注释 // 单行注释 /* …*/ 多行注释 注:多行注释不能互相嵌套 六.程序流程控制 一.条件语句 if 语法: if(condition) statements1 el ...
- session在本地可以正常使用,而在sae上却无法使用或者值为空的解决方法
session在本地可以正常使用,而在sae上却无法使用或者值为空的解决方法: session_start()放在当前页代码的第一行即可解决该问题. 在本地上session_start()如果不是放在 ...
- php编译内容
./configure --prefix=/usrc/share/php--with-apxs2=/usr/share/apache2/bin/apxs--with-config-file-path= ...
- 《Linux内核设计与实现》读书笔记 第五章 系统调用
第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...
- 前端开发与SEO
前端开发中通过一些小习惯,可以有利于SEO,本着蚊子再小也是肉的原则,能抓住自然不能忽略. 1.控制首页链接数量,不能过多,也不要太少.更不要为了凑数而添加 2.扁平化层次,力争跳转三次可以到任何页面 ...
- swfit-扩展语法
import UIKit extension Double { var km: Double { } var m : Double { return self} var cm: Double { re ...
- css绘制特殊图形,meida查询,display inline-box间隙问题以及calc()函数
本文同时发表于本人个人网站 www.yaoxiaowen.com 距离上一篇文章已经一个月了,相比于写代码,发现写文章的确是更需要坚持的事情.言归正传,梳理一下这一个月来,在写ife任务时,有必要记录 ...
- C++ 环形缓冲区的实现
参考文章:http://blog.csdn.net/linyt/article/details/53355355 本文参考linux系统中 kfifo缓冲区实现.由于没有涉及到锁,在多线程环境下,只适 ...