ACP*_*ACP 9 c# asp.net scheduled-tasks quartz.net
我刚刚将quartz.net dll添加到我的bin中并启动了我的示例.如何根据时间使用quartz.net调用C#方法?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Quartz;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(SendMail())
Response.write("Mail Sent Successfully");
}
public bool SendMail()
{
try
{
MailMessage mail = new MailMessage();
mail.To = "test@test.com";
mail.From = "sample@sample.com";
mail.Subject = "Hai Test Web Mail";
mail.BodyFormat = MailFormat.Html;
mail.Body = "Hai Test Web Service";
SmtpMail.SmtpServer = "smtp.gmail.com";
mail.Fields.Clear();
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "redwolf@gmail.com");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "************");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "465");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
SmtpMail.Send(mail);
return (true);
}
catch (Exception err)
{
throw err;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里我只是在页面加载时发送邮件.如何SendMail()
使用quartz.net在给定时间(比如早上6点)每天拨打一次电话?我不知道怎么开始.我应该在我的global.asax
文件中配置它吗?有什么建议吗?
M4N*_*M4N 23
你有没有尝试过quartz.net教程?
由于您的Web应用程序可能会被回收/重新启动,因此您应该(重新)初始化global.asax.cs中Application_Start处理程序中的quartz.net调度程序.
更新(完整示例和其他一些注意事项):
以下是使用quartz.net完成此操作的完整示例.首先,您必须创建一个实现IJob
quartz.net定义的接口的类.此类由quartz.net调度程序在配置的时间调用,因此应包含您的发送邮件功能:
using Quartz;
public class SendMailJob : IJob
{
public void Execute(JobExecutionContext context)
{
SendMail();
}
private void SendMail()
{
// put your send mail logic here
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,您必须初始化quartz.net调度程序,以便每天06:00调用您的工作.这可以做到Application_Start
的global.asax
:
using Quartz;
using Quartz.Impl;
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// construct job info
JobDetail jobDetail = new JobDetail("mySendMailJob", typeof(SendMailJob));
// fire every day at 06:00
Trigger trigger = TriggerUtils.MakeDailyTrigger(06, 00);
trigger.Name = "mySendMailTrigger";
// schedule the job for execution
sched.ScheduleJob(jobDetail, trigger);
}
...
}
Run Code Online (Sandbox Code Playgroud)
而已.你的工作应该每天06:00执行.对于测试,您可以创建一个每分钟触发的触发器(例如).看看方法吧TriggerUtils
.
虽然上述解决方案可能对您有用,但您应该考虑以下事项:如果一段时间内没有活动(即没有活动用户),您的Web应用程序将被回收/停止.这意味着您的发送邮件功能可能不会被执行(只有在应该发送邮件的时候有一些活动).
因此,您应该考虑针对您的问题的其他解决方案:
归档时间: |
|
查看次数: |
21156 次 |
最近记录: |