自分のWebサービスとの通信を試みているアプリケーションを表す状態マシンをカプセル化するクラスを作成しています。基本的な状態は、切断、接続、接続、資格情報の要求です。 Rxを使ってBehaviorSubjectを使って状態の変更を公開することについての良い学習経験があると思いました(うまくいけば、これは良い使い方ですか?)。この主題の私の州の1つは、「Requiring Credentials」です。ここでは、続行する前にユーザー名とパスワードを入力する必要があります。この演習の目的のために、私たちは、クラスは、Windowsコンソールアプリケーションでホストされていると仮定し、私はRxを使用してユーザー入力をリクエストするにはどうすればよいですか?
Console.WriteLine("Enter username");
var userName = Console.ReadLine();
Console.WriteLine("Enter password");
var password = Console.ReadLine();
私のRx BehaviorSubjectの結果
状態「RequiresCredentials」を押すと、それをユーザーに促したいとしましょうこの状態になるたびにこれに当たるはずです。
私は
public BehaviorSubject<ConnectionState> State { get; }
(すなわち、観察可能なインタフェースか何かの後ろにそれを隠されていない)、それ自体としてBehaviorSubjectを露出し、ブロックする資格情報については、この要求をしたいしています。
このサブスクリプションに正しく加入するために、この入力を待ってから最後に制御を呼び出しスレッドに戻すために、どのプロセスを使用する必要がありますか?
ありがとう@Shiomo最終的にこのクラスは、実際のアプリケーションコンソールとしてホストされているときは完全に非同期的な方法で使用されます。さまざまなXamarinベースのホストで使用されるPCLライブラリにあります。 Rxがバックグラウンドプロンプトに適していると思っています。また、私のより複雑なバックグラウンドdb sync'ingプロセスの他の部分を開始したり停止したりするのにも役立つでしょう。このアプリはオンとオフラインの両方で動作するように設計されています。私の例はちょっと基本的ですが、私はRxが後でうまくフィットすると信じていました。 –