2

这可能是关于共享变量的一般问题,但这里有。

我在网页上使用 GridView 来编辑每个作业,并且我需要连接到每个“行绑定”事件以从 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");
            }
                  }
4

2 回答 2

3

您可以为此使用以下代码:

var schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = schedulerFactory.GetScheduler();

如果您的调度程序具有特定名称,则有一个GetScheduler接受字符串名称的重载。

或者您可以使用以下内容:

IScheduler scheduler =
    SchedulerRepository.Instance.Lookup("DefaultQuartzScheduler");
于 2010-10-21T12:40:23.513 回答
0
@see
source StdSchedulerFactory.cs

line 373  string schedName = cfg.GetStringProperty(PropertySchedulerInstanceName, "QuartzScheduler");

so IScheduler scheduler =
    SchedulerRepository.Instance.Lookup("QuartzScheduler"); is default
于 2014-11-15T04:45:47.223 回答