質問

.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サービスを非同期にする方が簡単ですか?

役に立ちましたか?

解決

WCFサービス操作を非同期にする方がずっと良いと思います。このMSDNの記事はそれを行う方法を示しています:http://msdn.microsoft.com/en-us/library/ms730059.aspx.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top