2011-06-23 55 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