2

Windows サービスを使用していますが、動作に問題があります。

関連する機能は次のとおりです。

(現在を反映するように編集)

    static void Main()
    {
        if (Debugger.IsAttached)
        {
            ContinuumService Service = new ContinuumService();
            Service.Start(new Object[] { });

            while (true)
                Thread.Sleep(1);
        }
        else
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new ContinuumService() 
            };

            ServiceBase.Run(ServicesToRun);
        }
    }

    public ContinuumService()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        base.OnStart(args);
    }

    protected override void OnStop()
    {
        base.OnStop();
    }

私のインストーラーは「デスクトップとの対話をサービスに許可する」に設定されており(これがないとサービスをインストールできないようです)、サービスがインストールされていることはわかっていますが、何らかの理由で開始できません。

サービスの開始コマンドが OnStart を実行し、そのメソッドが完了するのを待つことは私の理解です。プロセスがまだ実行されている場合、完了時に、サービスは実行中を報告します...これが歪んでいる場合はお知らせください。

インストーラーから返される正確なエラーは、「サービス '[表示名]' ([名前]) の開始に失敗しました」です。システム サービスを開始するための十分な権限があることを確認してください。インストーラーの背後で生成されたログから、同じメッセージでエラー 1920 が表示されます。

どちらの場合でも、これが当てはまる正当な理由を思い付くことはできません。どんなアドバイスも素晴らしいでしょう。

4

2 に答える 2

1

あなたの問題は、ループと base.OnStart() および base.OnStop() 呼び出しの欠如の両方であると思います。ループなしで基本的なサービスを開始および停止でき、永続的に実行されます。文字通り何もしない基本的なサービスの例:

public class ExampleService : ServiceBase
{
    private static void Main()
    {
        ServiceBase.Run(new[] { new ExampleService() });
    }

    public ExampleService()
    {
        // Name the Service
        ServiceName = "Example Service";
    }

    protected override void OnStart(string[] args)
    {
        base.OnStart(args);

       // Does nothing
    }

    protected override void OnStop()
    {
        base.OnStop();
    }
}

これを実装してみて、動作することを確認し、ロジックを段階的に追加してテストしてください。

于 2013-06-20T20:57:32.923 に答える
0

どうやら私のインストーラーに問題があったようです。オプションをオフにしたり、オンにしたり、元に戻したり、裏返したり、その他の可能な限りの方向に切り替えた後、どういうわけかMSIを破損させ、再構築する必要がありました. 元のインストーラー プロジェクトを完全に消去し、新しいビルドでサービスを正常にインストールしました。これは Advanced Installer 9.3 の問題でした。

ありがとう。

于 2013-06-20T21:53:58.990 に答える