問題タブ [system.reactive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
41049 参照

c# - Reactive Extensions の使用の良い例

Rxの基本を理解しています。私が苦労しているのは、学術的な例を超えて実際にこれをどのように使用するかということですか? Rx が現在の .NET よりもはるかに優れたソリューションである、一般的で単純な実世界のシナリオは何ですか?

0 投票する
1 に答える
446 参照

.net - このLinq-to-Eventsドラッグアンドドロップコードを構造化するための最良の方法は何ですか?

マウスダウン、マウス移動、マウスアップを含むドラッグアンドドロップ操作を処理しようとしています。

これが私のソリューションの簡略化された再現です。

  • マウスを下に向けると、楕円が作成され、キャンバスに追加されます
  • マウスを動かすと、楕円がマウスに追従するように再配置されます
  • マウスを上にすると、キャンバスの色が変更され、ドラッグしているキャンバスが明確になります。

    /li>

XAMLは単純です

このコードについて私が気に入らないことがいくつかあり、リファクタリングの助けが必要です:)

まず第一に、mousedownとmouseupのコールバックが副作用として指定されています。に2つのサブスクリプションが作成された場合q、それらは2回発生します。

次に、mousemoveコールバックの前にmouseupコールバックが指定されます。これにより、読みにくくなります。

第三に、楕円への参照はばかげた場所にあるようです。サブスクリプションが2つある場合、その変数参照はすぐに上書きされます。キーワードを活用してlinq式に変数を導入する方法があるはずです。これはlet、マウス移動ハンドラーとマウスアップハンドラーの両方で正しい楕円参照を使用できることを意味します。

このコードをどのように書きますか?

0 投票する
1 に答える
1311 参照

c# - Rx:複数のIObservableWebリクエストをつなぎ合わせる

IObservablesとリアクティブ拡張機能を使用して複数の非同期Webリクエストを作成しています。

したがって、これにより、「GET」Webリクエストのオブザーバブルが作成されます。

そして、私はすることができます

他のリクエストが終了するまで待機する必要があるIObservablesとLINQを使用して複数の非同期Webリクエストを実行する正しい方法は何ですか?

たとえば、最初にユーザー情報を確認します。userInfoObservableを作成します。次に、ユーザー情報が正しい場合は統計を更新してupdateStatusObservableを取得し、ステータスが更新された場合はfriendshipObservableを作成します。

また、ボーナスの質問ですが、Web呼び出しを同時に実行し、すべてが終了したら、他の呼び出しが終了するまで実行する別のobservableを実行したい場合があります。

ありがとうございました。

0 投票する
2 に答える
1195 参照

c# - サブスクリプションから Interval ベースの IObservable に PropertyChanged イベントをディスパッチするにはどうすればよいですか

Observable.Interval() によって作成された IObservable コレクションへのサブスクリプション内から PropertyChanged イベントを発生させようとすると、「UnauthorizedAccesExpection - Invalid cross-thread access」例外が発生します。

私の限られたスレッドの知識では、イベントがUIスレッドで発生したいときに、間隔が他のスレッドで発生していると想定していますか??? 問題の説明は非常に役立ちます。

コードは次のようになります。

解決策はありますか?

編集:

このコードは、DependencyObject ではなく ViewModel から実行されています。

0 投票する
1 に答える
562 参照

c# - IHttpAsyncHandlerおよびIObservableWebリクエスト

非同期ハンドラー内で、リダイレクト文字列を返すWebrequestからIObservableを作成しています。

私はそのobservableをサブスクライブし、AsyncResult.CompleteCall()を呼び出していますが、それを実行するためにThread.Sleep(100)を使用する必要があります。そして、それは毎回機能するわけではありません。これは正しくないと確信しています。光を当てていただけませんか。ありがとうございました!

0 投票する
1 に答える
1858 参照

c# - System.Concurrency.AsyncLock は何をしますか?

System.Reactive.dll は、クラス AsyncLock を System.Concurrency に追加します。これには、アクションを取る単一のインスタンス メソッド Wait があります。

私が見つけたドキュメンテーション ページには、リリース前のドキュメンテーションが記載されているだけなので、ここで質問します。このクラスは何をしますか?

0 投票する
5 に答える
5100 参照

mono - Reactive Framework (RX) は Mono で使用できますか?

探していましたが、見つけたのは http://evain.net/blog/articles/2009/07/30/rebasing-system-reactive-to-the-net-clr だけでした rx が最初にリリースされたのが 2009 年半ばだったので、もっと簡単な方法があるはずです。

0 投票する
4 に答える
4063 参照

.net - リアクティブ拡張機能と FileSystemWatcher の比較

FileSystemWatcher について長い間悩まされてきたことの 1 つは、ファイルに対する単一の論理変更に対して複数のイベントを発生させる方法です。理由はわかっていますが、気にする必要はありません。ファイルを 4 ~ 6 回続けて再解析するのではなく、1 回だけ再解析したいだけです。理想的には、途中のすべてのステップではなく、特定のファイルの変更が完了したときにのみ発生するイベントがあります。

何年にもわたって、私はこの問題に対してさまざまな程度の醜さのさまざまな解決策を考え出しました。Reactive Extensions が究極のソリューションになると思っていましたが、私が正しく行っていないことがあり、誰かが私の間違いを指摘してくれることを願っています。

私は拡張メソッドを持っています:

最終的に、特定の期間内にファイル名ごとに 1 つのイベントを取得したいと考えています。これにより、単一のファイル名を持つ連続した 4 つのイベントが 1 つのイベントに削減されますが、複数のファイルが同時に変更されても何も失われません。時間。BufferWithTime理想的なソリューションのように聞こえます。

このオブザーバブルをサブスクライブすると、監視対象のファイルを 1 回変更すると、サブスクリプション メソッドが 4 回連続してトリガーされ、目的が果たせなくなります。呼び出しを削除するDistinct()と、4 つの呼び出しのそれぞれに 2 つの同一のイベントが含まれていることがわかります。そのため、バッファリングが行われています。渡された TimeSpan を増やしBufferWithTimeても効果がないようです。動作を変更せずに 20 秒まで上げました。

これは Rx への私の最初の進出なので、おそらく明らかな何かが欠けています。私はそれを間違っていますか?より良いアプローチはありますか?提案をありがとう...

0 投票する
1 に答える
989 参照

c# - Silverlight テストでイベントがトリガーされるのを待つ方法

コンストラクターでモデルの非同期の読み込みを開始し、モデルが読み込まれたときにイベントをトリガーする ViewModel があります。次のように、Silverlight 単体テスト フレームワークで動作するテストを取得しました。

しかし、私は Rx フレームワークで遊んで始めて、テストを機能させようとしていますが、今のところ運がありません。ここに2つの試みがあります:

最初のテストは永久に待機します。2 番目のテストは、FromEvent を実行するときに viewModel が null であるため機能しません。

誰でもこれを適切に行う方法の手がかりを持っていますか?

更新: PL の助けを借りた実用的なソリューションは次のとおりです。

0 投票する
1 に答える
2392 参照

c# - Reactive Extensions で監視可能なマウス ドラッグを作成する

私は次のものを持っています

サブスクライブすると、ドラッグの開始点と現在の終了点が得られます。ドラッグが完了したら、何かをする必要があります。RXでこれを完全に実行しようとして失敗し、最終的に実行しました

マウスの右ボタンをドラッグするまで、これは正常に機能します。次に、マウスの左ボタンをクリックすると、メッセージ ボックスが表示されます。左ボタンのドラッグのみを行うと、メッセージ ボックスが表示され、マウスの左ボタンをクリックしてもボックスが生成されません。外部状態なしでこれを行いたいのですが、少なくともそれが適切に機能することを望んでいます。

参考:ドラッグを揮発性にしてロックを使用しようとしましたが、うまくいきませんでした。

編集

私の問題は右クリックのコンテキストメニューにあったことがわかりました。それを取り除くと、上記のコードが機能しました。だから、今私の問題は、コンテキストメニューを表示し、コードを機能させる方法です。コンテキスト メニューがマウスの左クリックを処理していたため、何らかの理由でコードが機能しなかったと思いますが、まだ困惑しています。