2

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

4

1 に答える 1

1

WCFサービスを非同期で動作させる方がはるかに良いと思います。このMSDNの記事は、その方法を示しています:http: //msdn.microsoft.com/en-us/library/ms730059.aspx

于 2010-03-16T05:42:45.840 に答える