1
如何創建Quartz Scheduler作業,在給定的時間量後自動終止(如果正在運行的作業需要太多時間)?石英調度程序作業自動終止
如何創建Quartz Scheduler作業,在給定的時間量後自動終止(如果正在運行的作業需要太多時間)?石英調度程序作業自動終止
石英調度程序沒有內置的功能來在給定的時間量之後自行中斷作業。
如果您不想中斷作業(請參閱InterruptableJob接口)手動(例如與rmi),您可以輕鬆地建立這樣的自動終止。
或者:
要停止作業內部的作業,最簡單的方法是在特定時間後拋出異常。例如:
public class MyJob : IJob
{
Timer _t;
public MyJob()
{
TimeSpan maxRunningTime = TimeSpan.FromMinutes(1);
_t = new Timer(delegate { throw new JobExecutionException("took to long"); }, null, (int) maxRunningTime.TotalMilliseconds,
-1);
}
public void Execute(IJobExecutionContext context)
{
// do your word
// destroy T before leaving
_t = null;
}
}
希望它能幫助:)