windows服务方法不起作用
问题描述:
我是Windows服务c#中的新成员。我有一个名为JobAdminLib
的班级库,其中有一个班级电话ArchiveAutomationAdministrator
。这个类有一个叫做CountJobs()
的方法。我已经创建了一个windows服务,它将按照预定的时间间隔运行这个特定的方法。但它似乎并不适合我。日志报告说它正在运行,但该方法应该执行的功能不起作用。参考windows服务方法不起作用
public class ArchiveAutomationAdministrator
{
JobRepository repository = new JobRepository();
public IEnumerable<LiveJobs> GetCurrentlyRetentionJobs(Func<LiveJobs, bool>
criteria = null)
{
return from job in repository.GetCurrentlyRetentionJobs() select job;
}
public void countJobs()
{
var count = from job in repository.GetCurrentlyRetentionJobs() select job;
int[] JobCount = new int[count.Count()];
for (int i = 1; i <= JobCount.Length; i++)
{
string jobnumber = repository.GetCurrentlyRetentionJobs().First().JobNumber;
JobAdministrator admin = new JobAdministrator(repository);
admin.ArchiveJob(jobnumber);
}
}
}
继
我重视的代码是我的窗口服务
public partial class Scheduler : ServiceBase
{
private Timer timer1 = null;
public Scheduler()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
timer1 = new Timer();
this.timer1.Interval = 5000;
this.timer1.Elapsed += new
System.Timers.ElapsedEventHandler(this.timer1_Tick);
timer1.Enabled = true;
Library.WriteErrorLog("test windows service started");
}
public void timer1_Tick(object sender, ElapsedEventArgs e)
{
this.task();
Library.WriteErrorLog("Job running successfully");
}
protected override void OnStop()
{
timer1.Enabled = false;
Library.WriteErrorLog("Service Stopped");
}
public void task()
{
Library.WriteErrorLog("Inside task");
ArchiveAutomationAdministrator admin = new ArchiveAutomationAdministrator();
admin.countJobs();
}
}
答
检查,如果Windows服务器具有运行
如果确定
转到Windows权限服务清单
1-打开运行cmd
2 - 键入services.msc
3-您的服务名称用鼠标右键单击本地系统帐户
在登录 4-选项卡点击选中允许服务交互
与桌面
答
这countJobs方法有一个疯狂的方式列举一个列表。它很难说这是否会工作,但尝试以下...
public void countJobs()
{
foreach (var job in repository.GetCurrentlyRetentionJobs())
{
Library.WriteErrorLog("Archiving job " + job.JobNumber);
string jobnumber = job.JobNumber;
JobAdministrator admin = new JobAdministrator(repository);
admin.ArchiveJob(jobnumber);
}
}
这样你会得到循环内部记录,你就可以知道是否有任何实际的过程。
缩进你的代码会让它变得更加可读。 –
缩进你的代码! –
总不可读,给大家这里眼癌。请接受修改建议。 –