2011-06-23 53 views
3

我在C#中構建Windows服務,並且我有一個名爲OnStart的方法,我的所有業務邏輯都位於一個名爲code.cs的文件中,我如何告訴OnStart方法來調用Code.cs中的stater方法「starter」?C# - 使用OnStart方法調用線程

/// <summary> 
/// OnStart: Put startup code here 
/// - Start threads, get inital data, etc. 
/// </summary> 
/// <param name="args"></param> 
protected override void OnStart(string[] args) 
{ 
    base.OnStart(args); 
} 

回答

2

OnStart需要返回以便Windows知道服務已啓動。您應該在OnStart中啓動一個調用您的啓動器的新線程。例如:

protected override void OnStart(string[] args) 
{ 
    Thread MyThread = new Thread(new ThreadStart(MyThreadStarter)); 
    MyThread.Start(); 

    base.OnStart(args); 
} 

private void MyThreadStarter() 
{ 
    MyClass obj = new MyClass(); 
    obj.Starter(); 
} 

這假定您目前的Starter方法不產生它自己的線程。關鍵是允許OnStart返回。

0

您將不得不創建一個對象的實例並調用該實例的方法。

E.g.

CodeMyClass obj = new CodeMyClass(); 
obj.Starter(); 

//Replace CodeMyClass with the Type name. or if it is a single call the appropriate constructor. 

希望這會有所幫助。

+0

這是不對的。這裏的Starter()方法應該在單獨的線程上運行,否則OnStart()不會立即返回到Windows。 –

+0

@羅伊感謝您糾正我。 – softwaredeveloper