SOAP呼び出しを行う古い非同期コードを書き直しました。fetch() メソッドは、SOAP インターフェースから結果を取得し、それを WPF ビューにバインドされた DataTable に追加します。新しいコードは、Reactive Extensions を使用して文字列のリストを取得し、リストから IObservable を作成します。結果を非同期で返すと思っていましたが、結果セット全体の準備が整うまで UI 全体がロックされます。私はReactive Extensionsを初めて使用するので、単純なものが欠けているだけだと思っています。
コード:
(クリックイベントから)
private void fetchSoapRows()
{
var strings = (txtInput.Text.Split('*')).ToObservable();
strings.Subscribe(s=> SoapQueryEngine.Fetch(s));
}
また、このメソッドが将来アプリケーションをブロックしないことを確認するためのテストを作成する方法を知っている人はいますか?