我正在寫一個封裝了一個狀態機的類,它代表了我的應用程序嘗試與我自己的Web服務進行通信。基本狀態已斷開連接,連接並需要憑證。我認爲有關使用Rx發佈狀態更改與BehaviorSubject的良好學習經驗(希望這本身就是很好的用法?)。我的這個主題的狀態之一是'需要證書',我需要在繼續之前提示用戶提供用戶名和密碼。對於這個練習的目的,讓我們假設這個類在Windows控制檯應用程序託管,並且我想與您如何請求使用Rx的用戶輸入?
Console.WriteLine("Enter username");
var userName = Console.ReadLine();
Console.WriteLine("Enter password");
var password = Console.ReadLine();
由於我的Rx BehaviorSubject的結果擊中狀態「RequiresCredentials」,它提示用戶每當這個狀態被擊中時都應該擊中這個。
我已經暴露了BehaviorSubject作爲自身(即沒有隱藏它可觀察到的接口或任何後面)
public BehaviorSubject<ConnectionState> State { get; }
,並希望爲憑證被阻止該請求。
我應該使用什麼過程來正確訂閱此主題,等待此輸入並最終將控制返回給調用線程?
謝謝@Shiomo最終將以完全異步的方式將這個類作爲「真實」應用程序控制臺進行實驗時使用。它位於PCL庫中,將被各種基於Xamarin的主機使用。對憑證的需求將是一個提示,如果他們更改或過期,所以我認爲Rx將非常適合後臺提示,還可以啓動和停止更復雜的後臺數據庫同步進程的其他部分。該應用程序設計用於在線和離線工作,所以雖然我的例子有點基本,但我相信Rx很適合以後。 –