管理アプリケーションを作成しました。私のアプリケーションが行うことの 1 つは、指紋リーダーがプラグインまたはプラグアウトされるたびに検出できるプラグインに登録することです。クラスは次のようにイベントをサブスクライブします。
//Subscribe to the plug, unplug and imageAcquired events from the GrFingerXCtrlClass library.
FingerXCtrlClass.SensorPlug += ReaderPlug;
FingerXCtrlClass.SensorUnplug += ReaderUnplug;
FingerXCtrlClass.ImageAcquired += ImageAcquired;
最初にプログラムに積極的に取り組んでいたとき、私は WPF アプリケーションを開発しました。このアプリケーションを通じて、いくつかのリストを表示し、いくつかの設定を切り替えることができたので、サービスがうまく機能していると確信しています. この WPF アプリケーションでは、サービスをインスタンス化して作成しました。
ProjectServiceLogic logic = new ProjectServiceLogic();
これで、インストーラーが作成されました。したがって、アプリケーションを初期化する ProjectService クラスがありました。これは次のように行われています。
protected override void OnStart(string[] args)
{
log.Debug("Starting service...");
_worker = new Thread(new ThreadStart(StartService));
_worker.IsBackground = true;
_worker.Name = "ServiceThread";
_worker.SetApartmentState(ApartmentState.STA);
_worker.Start();
log.Debug("Successfully started service");
}
void StartService()
{
serviceLogic = new ProjectServiceLogic();
while (!_shutdownEvent.WaitOne(0))
{
}
}
プログラムがインストールされ、サービスが開始されます。サービスをデバッグしていると、サブスクライブ コードが実行されることに気付きました。ただし、デバイスをプラグインしてもイベントはトリガーされませんが、WPF アプリケーションを介してローカルで実行し、サービス ロジックをインスタンス化するとトリガーされます。なぜ今はうまくいかないのですか?