私はWindowsサービスを継承しています。スタートアップコードに新しいスレッドを作成する目的を理解していないStartStart()はOnStartサービスメソッドによって呼び出されます。この新しいスレッドに参加することができますので、復帰する前に完了するまで待ちます。
私の理解は、長い実行中のスタートアップコードは新しいスレッドに移動する必要がありますが、その1つ すべきではない Windowsサービスマネージャーにタイムリーに対応する必要があるため、完了するまで待ってください。
誰かが教えてくれますか?このサービススタートアップコードのスレッドの目的は何ですか?
public void Start()
{
if (MyServerState.Stopped == this._srvrState)
{
this._srvrState = MyServerState.Starting;
lock (this._startStopLock)
{
Thread startup = new Thread(Startup);
startup.Priority = ThreadPriority.AboveNormal;
startup.Name = "Publisher Startup";
startup.Start();
startup.IsBackground = true;
startup.Join(SYSRESPONSE_INTERVAL);
}
}
}
回答:
回答№1は0起動。できるだけ早くサービスの開始を完了しなければならないと正しく言ったので、参加はそこにはいけません。上記のコードはおそらくSYSRESPONSE_INTERVALが30秒(サービスコンソールが起動スレッドに与える完了時間)未満である可能性があるため、おそらく動作している可能性があります。結合を削除してもコードは正常に実行されます。