Visual Studio .NET 2008 with VB.NETで2つのサービスが開発されました。両方とも、別々の個人(自分自身の1人)が完全に別々に開発しましたが、どちらもブート中に同じエラーを報告しています。起動後にシステムイベントログに「サービスがハングアップしました」と表示されます。サービスは、そのメッセージの後にうまく始まるように進んでいます(サービスが開始されたという通知が表示されます)。 .NETフレームワークやJITを読み込むのが遅いということが、これを引き起こしているコードをコンパイルしているのでしょうか?手動で終了すると、起動して停止します。 Mineは、フレームワークが提供するもの以外のスタートアップコードを持たない非常にシンプルなサービスです。Windowsサービスが起動中に起動します
アップデート1: これは私がOnStartメソッドで持っているすべてである:それはちょうどVB.NETで提供されるデフォルトの空のpublicコンストラクタを取得するよう
host = New ServiceHost(GetType(FSE.Licensing.FSELicense))
host.Open()
FSELicenseは、コンストラクタを定義していない、私は推測。
更新2: 私の質問は、おそらく問題を修正した同僚が提案した解決策に基づいて変わっています。このソリューションは実際には、要求が行われるまでサービスが何もしないので、必要とは思わなかった別のサービスに依存関係を追加するだけです。ただし、COMタイプの変数を宣言します。このCOMタイプへの参照を持つと(たとえインスタンスが存在しなくても)COM DLLがサービスと同時にロードされ、おそらくサービスに依存する可能性がありますか?私はCOMリファレンスが.NETの静的リンクのようなものであることを認識しませんでした。
スタートアップコードはまったくありません。イベントを待ち受けるクラスをインスタンス化しないでください。スタートアップ時に何もしないと、このサービスは正確に何をしますか? – David
はい、イベントをリスンするクラスをインスタンス化しますが、フレームワークコードとしてカウントしました:)実際はそうではないと思います。 – BlueMonkMN
host.Open()は何をしますか? 一般に、OnStartメソッドでは作業を実行しないでください。 OnStartメソッドが適時に返るように、実際の作業を行うためにスレッドを開始する必要があります。 –