記Quartz.Net異常處理
Quartz.Net是從java移植過來的Quartz,用于任務(wù)調(diào)度,支持多線程,是非常方便的任務(wù)管理器。如果你的項(xiàng)目需要用到多任務(wù)甚至多線程處理業(yè)務(wù),那么Quartz.Net是你非常好的選擇。Quartz.Net的文章非常多了,主要是轉(zhuǎn)載的多,大家可以到 善友 的blog去看看,那邊有非常詳細(xì)的資料,我這邊僅記錄下用Quartz.Net發(fā)生的異常。
1,首先,Quartz.Net中的異常處理,在每個(gè)Job的Execute()方法中,必須用try{}catch(){}把你的業(yè)務(wù)代碼給包起來,然后在catch中拋出JobExecutionException,如果不這么做的話,很可能導(dǎo)致你的程序掛掉。代碼如下:
try
{
// actual job steps to be executed
}
catch (Exception ex)
{
JobExecutionException exception = new JobExecutionException(ex);
exception.Source = context.JobDetail.FullName;
exception.UnscheduleFiringTrigger = true;
throw ex;
}
2,獲取正在運(yùn)行的job
foreach (JobExecutionContext context in scheduler.GetCurrentlyExecutingJobs())
{
}
3,怎么傳遞參數(shù)到Execute方法中
JobDetail job = new JobDetail(jobname, jobgroup, typeof(LogJob));
job.JobDataMap.Put("UserId", userId);
job.JobDataMap.Put("UserName", userName);
在Execute方法中獲取:
int userId= context.JobDetail.JobDataMap.GetInt("UserId");
1,首先,Quartz.Net中的異常處理,在每個(gè)Job的Execute()方法中,必須用try{}catch(){}把你的業(yè)務(wù)代碼給包起來,然后在catch中拋出JobExecutionException,如果不這么做的話,很可能導(dǎo)致你的程序掛掉。代碼如下:
try
{
// actual job steps to be executed
}
catch (Exception ex)
{
JobExecutionException exception = new JobExecutionException(ex);
exception.Source = context.JobDetail.FullName;
exception.UnscheduleFiringTrigger = true;
throw ex;
}
2,獲取正在運(yùn)行的job
foreach (JobExecutionContext context in scheduler.GetCurrentlyExecutingJobs())
{
}
3,怎么傳遞參數(shù)到Execute方法中
JobDetail job = new JobDetail(jobname, jobgroup, typeof(LogJob));
job.JobDataMap.Put("UserId", userId);
job.JobDataMap.Put("UserName", userName);
在Execute方法中獲取:
int userId= context.JobDetail.JobDataMap.GetInt("UserId");
String userName = context.JobDetail.JobDataMap.GetString("UserName");
本文出自一soopeng網(wǎng)http://www.soopeng.com,轉(zhuǎn)載請(qǐng)保留鏈接。
posted on 2011-11-16 11:30 天羽 閱讀(1871) 評(píng)論(1) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)