2010-08-19 223 views
0

嘿傢伙,我已經在網上關於一些關於創建和安裝Windows服務的教程,似乎不斷陷入困境。我遵循教程here,它似乎在工作,但它不是100%。這是使用代碼IM:堅持實施Windows服務

namespace SuperService 
{ 
partial class Logger : ServiceBase 
{ 
    public Logger() 
    { 
     InitializeComponent(); 
    } 

    void timer1_Tick(object sender, EventArgs e) 
    { 
     LogEvent("This Timer has been ticked!", EventLogEntryType.Information); 
    } 

    protected override void OnStart(string[] args) 
    { 
     timer1.Tick += new EventHandler(timer1_Tick); 
     timer1.Start(); 
     LogEvent("This SuperService has started!", EventLogEntryType.Information); 
    } 

    protected override void OnStop() 
    { 
     LogEvent("This SuperService has stopped.", EventLogEntryType.Information); 
    } 

    protected override void OnPause() 
    { 
     base.OnPause(); 
     timer1.Stop(); 
    } 

    protected override void OnContinue() 
    { 
     base.OnContinue(); 
     timer1.Start(); 
    } 

    static void LogEvent(String Message, EventLogEntryType type) 
    { 
     String source = "Logger"; 
     String log = "Application"; 
     if (!EventLog.SourceExists(source)) 
     { 
      EventLog.CreateEventSource(source, log); 
     } 

     EventLog eLog = new EventLog(); 
     eLog.Source = source; 

     eLog.WriteEntry(Message, type); 
    } 
} 
} 

現在,當我啓動服務它顯示了以下兩個事件後檢查事件查看器:

這SuperService已經開始了!

服務已成功啓動。

所以它似乎有點工作,我沒有看到是由timer1_Tick觸發的事件。有誰知道爲什麼或可以指出我在正確的方向嗎?提前致謝。

+0

定時器的間隔是多少?確保它不是0. – 2010-08-19 20:43:56

+0

定時器的間隔在哪裏設置?也許在設計師?它有什麼價值? – 2010-08-19 20:45:20

+0

其60000和啓用 – 2010-08-19 20:45:46

回答

1

您是否使用System.Threading.Timer而不是System.Windows.Forms.Timer? 您使用有有同樣的問題和切換成功

更多信息System.Threading.Timer的用戶評論教程的鏈接(從你的鏈接所): Problem with System.Timers.Timer not firing in a Windows service

+0

你是對的,因爲我懷疑。我改變了代碼,現在它可以工作。謝謝! – 2010-08-20 16:28:18

1

另外,通過topshelf,windows服務更容易。開源項目,允許您將您的服務編寫爲控制檯應用程序/ POCO,但可以從「服務容器」中提取安裝/卸載/調試支持,以便將所有膠水抽象化。

myservice         (to run as console app for debugging) 
myservice /install 
myservice /uninstall 
myservice /instance:{instance_name} 
0

編輯:這是一個SO回答,涵蓋了我在下面寫的東西。

Windows Service Stops Automatically


我相信,如果它「認爲」的服務無關的Windows將停止服務。我不記得做這個的確切的底層「API」。幾年前我和它一起戰鬥過。


在你的事件日誌中是否有某些東西在寫着:「我的服務沒有做到,終止」。或者是一些傳達這種言辭的信息?

+0

不。只是我在帖子中提到的兩個 – 2010-08-19 21:04:30