2017-07-19 72 views
0

我是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(); 
} 
} 
+3

缩进你的代码会让它变得更加可读。 –

+1

缩进你的代码! –

+0

总不可读,给大家这里眼癌。请接受修改建议。 –

回答

0

检查,如果Windows服务器具有运行
如果确定
转到Windows权限服务清单
1-打开运行cmd
2 - 键入services.msc
3-您的服务名称用鼠标右键单击本地系统帐户
在登录 4-选项卡点击选中允许服务交互
与桌面

0

这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); 
     } 
    } 

这样你会得到循环内部记录,你就可以知道是否有任何实际的过程。