.Net アプリケーションから USB 指紋リーダーを制御するための WCF サービスのセットアップがあります。これは正常に機能し、ユーザーの登録などを依頼できます。
リーダーは識別を許可します (特定のユーザーの指が存在することを確認するように要求するのではなく、特定のユーザーが指を提示したことを通知します) が、デバイスはそのステータスについて識別モードにある間、常にポーリングする必要があります。ユーザーがステータスの変更を検出しました。
私が望むのは、関心のあるアプリケーションが、ユーザーが識別されたときに知りたいことをサービスに通知し、これが発生したときにトリガーされるコールバックを提供することです。WCF サービスはすぐに戻り、バックグラウンドでスレッドを生成してデバイスを継続的にポーリングします。誰もログインしようとしない場合、このポーリングは一度に何時間も続く可能性があります。
これを達成する最善の方法は何ですか?私のサービス契約は現在、次のように定義されています。
[ServiceContract (CallbackContract=typeof(IBiometricCallback))]
public interface IBiometricWcfService
{
...
[OperationContract (IsOneWay = true)]
void BeginIdentification();
...
}
public interface IBiometricCallback
{
...
[OperationContract(IsOneWay = true)]
void IdentificationFinished(int aUserId, string aMessage, bool aSuccess);
...
}
私のBeginIdentification()
方法では、デバイスをポーリングするワーカー スレッドを簡単に生成できますか?それとも、WCF サービスを非同期にする方が簡単ですか?