C#任务计划程序触发器无法正常工作

时间:2011-06-09 16:56:33

标签: c# asp.net sql scheduled-tasks

我不知道是否有人可以帮助解决这个问题,但是当我运行我的应用程序时,我收到一个错误(对象引用没有设置为对象的实例)。这是代码:

using (SqlConnection myConnection2 = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString))
            {
                myConnection2.Open();
                SqlCommand cmd2 = new SqlCommand("SELECT ID, TaskName, Permission from ScheduledTasks s, Roles r WHERE s.ID= " + txtTaskID.Text, myConnection2);

                SqlDataReader rdr;
                rdr = cmd2.ExecuteReader();

                if (rdr.HasRows)
                {
                    while (rdr.Read())
                    {
                        string task = rdr["TaskName"].ToString();
                        Trigger tg = new RunOnceTrigger(DateTime.Now);
                        ScheduledTasks st = new ScheduledTasks();
                        Task t = st.OpenTask(task);
                        t.Triggers.Add(tg);
                        t.Save();
                    }
                }
            }

行t.Triggers.Add(tg)中的错误。我已经完成了代码,任务是存储正确的任务名称。它只是不会启动任务。

2 个答案:

答案 0 :(得分:0)

我的直接猜测是t.Triggers目前等于null

在尝试向其添加任何内容之前,您可能需要在t.Triggers中实例化触发器集合。

答案 1 :(得分:0)

您似乎以作者演示的方式使用它。你遇到的错误是什么?请发布异常消息。

作者常见问题解答:

  

为什么我会获得访问权限异常?

     

这个问题通常会出现   想要使用任务的客户   ASP.NET代码中的调度程序。   通常,这样的代码运行在   ASPNET账号相当低   特权,无法使用任务   调度。对此的解决方案是   设置你的代码在另一个,更多   特权帐户。这就是所谓的   模仿,你可以设置它   在你的web.config文件中。

     

任务计划程序并不需要   客户端以管理方式运行   特权,但如果不是,就会有   对可以做什么的限制。一世   没有发现这些   充分证明。但是,直到   最近似乎是这样   非管理员可以看到和   操纵他们创建的任务,但是   没有其他人。在Windows XP SP2中,有   似乎是一些概括。在   资源管理器,有一个新的安全性   “任务属性”对话框中的选项卡。   还有一点点   文档解释该文件   将管理该任务的权限   其他用户可以用它们做什么。   读=看它,读/执行=运行   任务,写=修改任务。

我也想知道,你还没有提供任务应该做的任何细节。正如应该发生的事情一样,某些程序需要在任务运行时执行。我假设您在发布之前删除了这些行。如果没有,那么这个库可能不允许创建任务,而没有关于在预定时间执行哪个应用程序的信息。

我使用这个特殊的库:http://taskscheduler.codeplex.com/ ...它积极开发,最新版本于5月上个月发布。它会根据操作系统自动使用正确版本的任务计划程序。这只是个人偏好......