2011-06-23 9 views
3

C#でWindowsサービスを構築していて、OnStartというメソッドがあります。私のビジネスロジックはcode.csという名前のファイルにあります。どうすればOnStartメソッドはcode.csでスターターメソッド "スターター"を呼び出す?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

Windowsがサービスが開始されたことを知るためには、OnStartから戻る必要があります。あなたのスターターを呼び出す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(); 
} 

これは、現在のスターターメソッドが自分のスレッドを生成しないことを前提としています。キーは、OnStartが戻ることを可能にすることです。

0

オブジェクトのインスタンスを作成し、そのインスタンスでメソッドを呼び出す必要があります。

など。

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

@Roy私を訂正していただきありがとうございます。 – softwaredeveloper

関連する問題