2012-05-01 44 views
0

我有servicebase 2服務具有OnStart方法是infinate循環,但是當啓動一個服務它,從來沒有開始這是第一次在列表中的服務和未來的(使用AsyncReadContext方式完成的)Windows服務的OnStart問題到第二次服務的啓動。 某些代碼:有兩個服務

  ServiceBase[] ServicesToRun; 

      ServicesToRun = new ServiceBase[] 
      { 
          new Service1(), 
       new Service 2(), 
      }; 

      ServiceBase.Run(ServicesToRun); 

ONSTART:

protected override void OnStart(string[] args) 
     { 
//read MsMQ async way 
} 

服務1被讀取隊列但服務2不讀取隊列。當我將服務2更改爲列表中的第一個時,它的代碼相同,然後服務2正在讀取隊列。這裏的兩個服務隊列是不同的。

回答

2

你應該揭開序幕,在OnStart中另一個線程 - 方法,做實際工作。

例如與匿名方法:

var t = new Thread(new ThreadStart(() => { 
    //Actual work here 
})); 
t.Start(); 

這將導致OnStart方法馬上完成,還應該啓動你的第二個服務。

0

有在我的代碼的問題。兩個服務Service1和Service2並未由serviceinstaller安裝。當我更改爲serviceIntaller和ServiceInstaller到ProjectInstaller。我是1093錯誤和服務無法啓動,這是因爲服務的服務名稱是相同的,一旦我改變到服務問題的類名已解決。