1

C# フレームワーク 4.0 を使用して Windows サービスを作成するのは初めてです。DLL ファイルを使用して指紋出席端末に接続する Windows アプリケーションを作成しました。

しかし、WindowsアプリをWindowsサービスに変換する方法がわかりません。

チュートリアルに従ったので、簡単なサービスを実行してインストールできます。しかし、Windowsサービスに新しいイベントを追加する方法

最初に、プロジェクトの DLL ファイルへの参照を追加します。次に、このコードを InitializeComponent メソッドに追加しました

    private void InitializeComponent()
    {  
        this.ServiceName = "MyService";
        AxBioBridgeSDK.AxBioBridgeSDKX MyBio = new AxBioBridgeSDK.AxBioBridgeSDKX();

        MyBio.OnAttTransaction += new AxBioBridgeSDK.IBioBridgeSDKXEvents_OnAttTransactionEventHandler(this.axBioBridgeSDKX1_OnAttTransaction); // this is the event handler function
    }

    #endregion
    private AxBioBridgeSDK.AxBioBridgeSDKX MyBio;
}

そして、OnStart()ターミナルとの接続を開くコードを追加します。サービスをインストールして実行しようとすると、次のエラーが発生します。

Windows は、ローカル コンピューターで "MyServiceName" サービスを開始できませんでした。

エラー 1053: サービスは開始要求または制御要求にタイムリーに応答しませんでした。

何か助けはありますか?

4

2 に答える 2

1

Windows サービスは、ユーザー インターフェイス イベントを処理するためのものではありません。これらは、別のメモリ空間で別の資格情報を使用して実行するように設計されています。通常、ユーザーがログインする必要はありません。

発生しているエラーは、サービスの開始機能が適切に動作しておらず、開始するとすぐにサービスが停止することが原因です。

サービスのデバッグには、Windows アプリケーションのデバッグとは異なるいくつかの手法が必要です。最初にサービスをインストールし、サービス マネージャーを使用して開始して、デバッグできるようにする必要があります。

于 2012-10-01T10:28:17.257 に答える
0

これにはいくつもの可能性があります。失敗した .net 実行のイベント ログを確認してください。失敗した理由に関する詳細情報が提供される場合があります。

ユーザー アプリから Windows サービスに移行する際に考慮すべき点がいくつかあります。

  1. アプリを実行するアカウントが異なるため、セキュリティ権限が要因になる可能性があります
  2. Windows サービスは、デスクトップ アプリが行うユーザー操作を行います。
  3. サービスがすぐに開始されない場合、Windows はエラーが発生したと判断してプロセスを自動的に中止します。

つまり、デスクトップ != Windows サービス != Web アプリです。それぞれに独自のコンテキスト、目的、長所と短所があります。

于 2012-10-01T10:31:38.827 に答える