2017-07-19 70 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); 
     } 
    } 

這樣你會得到循環內部記錄,你就可以知道是否有任何實際的過程。