这可能是关于共享变量的一般问题,但这里是。
我在网页上使用 GridView 来编辑每个作业,并且我需要连接到每个“rowbound”事件以从 jobDataMap 获取一些数据。
无论如何,调度程序在 Page_Load 方法中启动(创建我可以用来访问信息的变量 sched),但从任何其他事件/方法我无法访问 sched 变量。我如何允许自己这样做?
谢谢
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.Header)
{
var schedulerFactory = new StdSchedulerFactory();
IScheduler sched = schedulerFactory.GetScheduler();
string schedID = sched.SchedulerInstanceId;
string id = e.Row.Cells[0].Text;
string groupid = e.Row.Cells[1].Text;
JobDetail jobDetail = sched.GetJobDetail(id, groupid);
Trigger[] trigger = sched.GetTriggersOfJob(id, groupid);
JobDataMap dataMap = jobDetail.JobDataMap;
e.Row.Cells[3].Text = dataMap.GetString("nameid");
}
}
最佳答案
您可以使用以下代码来实现此目的:
var schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = schedulerFactory.GetScheduler();
如果您的调度程序有特定名称,则会出现接受字符串名称的 GetScheduler
重载。
或者您可以使用以下内容:
IScheduler scheduler =
SchedulerRepository.Instance.Lookup("DefaultQuartzScheduler");
关于c# - 从另一种方法(Quartz.NET)获取调度程序。或者一般方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3987480/